Was entspricht dem Drücken von Strg + C in der Konsole für Chrome und Firefox? Während ich verschiedene Algorithmen implementiere, schreibe ich oft eine Buggy-Schleife ( while
), die in Javascript, die nicht beendet wird, den Browser einfriert. Neuladen funktioniert nicht, klicken Sie auf kleines X zum Schließen der Registerkarte tut nichts, und nach einer Weile (buchstäblich) bin ich aus dem Speicher, System wechselt, und ich gehe für eine Kaffeepause.
Es gibt keine Ctrl + C
für JavaScript. Die Browser, die JavaScript ausführen, schützen sich normalerweise selbst. Wenn JavaScript nicht mehr reagiert, wird ein Dialogfeld ausgelöst, in dem Sie gefragt werden, ob der Benutzer das JavaScript stoppen möchte.
Die Zeitüberschreitung kann normalerweise in den Einstellungen des Browsers gefunden werden. Sie können finden, wie man es für FireFox hier tut: Ссылка
In Chrome können Sie Shift+ESC
drücken (oder mit der rechten Maustaste auf die Titelleiste klicken und den Chrome-Aufgabenmanager öffnen) und den Prozess beenden, der mit der aufgehängten Registerkarte verknüpft ist. Dies funktioniert in Fällen, in denen das Schließen der Registerkarte nicht möglich wäre.
Der Nachteil ist, dass Chrome manchmal mehrere Tabs in einen Prozess strafft und dadurch alle mit dem Prozess verbundenen Tabs abbricht.
Ein weiterer Ansatz, den Sie anwenden können, um while
loops zu vermeiden, indem Sie den Browser hängen, besteht darin, Code wie diesen zu schreiben (Sie können ihn nach dem Testen entfernen):
Klicken Sie mit der rechten Maustaste in den Task-Manager von Chrome und wählen Sie das Element am unteren Rand des Kontextmenüs aus, um ein seltsames Osterei anzuzeigen.
Von dem kleinen Einblick, den ich in Ihre Arbeitsweisen habe, wie ich fortfahren würde ist:
onload
ausführt.
js
-Code auf der Registerkarte "Skripts" der Entwicklertools Es gibt keinen echten "Unterbrecher", um Javascript in einem Browser auszuführen. ECMAscript wird im so genannten "UI-Thread" ausgeführt, was bedeutet, dass alle Rendering-Objekte in derselben Warteschlange ausgeführt werden, in der der ECMAscript-Code ausgeführt wird.
Das bedeutet wiederum, dass eine Endlosschleife in ECMAscript automatisch die gesamte Browser-Interaktion aufhängt.
Der einzige Weg, dies zu vermeiden, ist klaren, sauberen Code zu schreiben. Wenn es dennoch passiert, merken die meisten Browser, dass der UI-Thread zu lange beschäftigt ist und fragen den Benutzer, ob er die laufenden Javascript-Prozesse abbrechen möchte. Wenn Sie nicht darauf warten wollen, müssen Sie nur den gesamten Browser / Tab-Prozess beenden.
Wenn Sie jedoch wissen, dass ein Teil Ihres Skripts möglicherweise eine Endlosschleife verursacht, können Sie entweder breakpoints
manuell in einer Art developer tools
setzen oder Sie können das Schlüsselwort debugger;
direkt in Ihr Skript einfügen . Das bewirkt, dass der Javascript-Interpreter bei der aktuellen Zeile anhält und Sie haben die Möglichkeit, den nächsten Code zu analysieren (während Bedingungen für die Instanz) und die Ausführung abzubrechen, wenn sie schlecht aussieht.
Tags und Links javascript google-chrome browser firefox