Javascript-Ausführung beenden
stehtimschilf
- javascript
0 Der Martin
0 suit0 LX
Hi Forum
auf einer Seite bin ich auf ein kleines aber ekliges Ding gestossen:
<script type="text/javascript">
function loopForEver() {
for(;;) {
}
}
</script>
<button type="button" onclick="loopForEver();">click to kill your browser</button>
Klick ich drauf, so reagiert FF, Opra, IE nicht mehr!
Meine Frage ist evtl. etwas deplaziert, aber wie kann ich in den Browsern das JavaScript beenden? Mir blieb nur die Taskmanager Variante..... Ich meine nicht "JavaScript" deaktivieren. Sondern eben, wenn ich auf einer Seite bin und das JavaScript örgelt, dass ich dieses abschiessen kann so à la ctrl + break in den 80er :)
cheerioh & thx
SiS
Hallo,
auf einer Seite bin ich auf ein kleines aber ekliges Ding gestossen:
function loopForEver() {
for(;;) {
}
}
fein, der klassische Prototyp einer Endlosschleife, die nichts tut außer die CPU sinnlos zu beschäftigen.
> Klick ich drauf, so reagiert FF, Opra, IE nicht mehr!
Logisch.
> Meine Frage ist evtl. etwas deplaziert, aber wie kann ich in den Browsern das JavaScript beenden?
Soweit ich weiß, beenden die meisten Browser ein amoklaufendes Javascript nach einiger Zeit von selbst - oder fragen zumindest nach einigen Sekunden nach, ob es weiter ausgeführt werden soll.
Ciao,
Martin
--
Verliebt: Er spricht, sie lauscht.
Verlobt: Sie spricht, er lauscht.
Verheiratet: Beide sprechen, und die Nachbarn lauschen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Klick ich drauf, so reagiert FF, Opra, IE nicht mehr!
Bei mir stirbt kein Browser:
Firefox friert kurz vollständig ein und liefert nach ein paar Sekunden einen entsprechenden Dialog zum Abbruch.
Chrome friert nur den betreffenden Tab ein und liefert dann einen Dialog, dasselbe für Safari.
Der IE liefert sofort einen entsprechenden Dialog.
Opera lässt sich garnicht beeindrucken und ignoriert diese Endlosschleife einfach.
Das beste Verhalten ist hier IMHO dem IE zuzuschreiben, der sagt, dass etwas nicht korrekt läuft. Operas stillschweigen ist zwar auch OK, aber dennoch etwas unpraktisch zum Debuggen.
Bei mobilen Browsern hat man damit besonders viel Probleme, weil der Speicher noch knapper ist. Ein weiteres beliebtes Spiel besteht darin, mit zu vielen alerts die Bedienung unmöglich zu machen; Firefox hat zumindest ein entsprechendes Plugin dagegen.
Das Hauptproblem in Deinem Fall wird wohl darin bestehen, dass der Browser, sobald er die CPU mit JavaScript hinreichend belastet, selbst nicht mehr genügend Ressourcen hat, um dessen Ausführung zu beenden.
Opera ignoriert den Code übrigens nicht, sondern optimiert ihn einfach weg, da er von der Verlangsamung abgesehen, keinen Effekt hat.
Gruß, LX