Sagen wir, ich habe diese Funktion:
%Vor% Ich gehe mit den Dev-Tools des Browsers durch die Anweisungen. Jetzt, wenn ich bei "statement_X" pausiert habe, möchte ich die Ausführung der Funktion beenden (ich möchte nicht, dass der "statements 2" -Teil der Funktion ausgeführt wird), als ob unmittelbar auf "statement_X" folgt Eine return;
-Anweisung.
Ich weiß, dass Chrome Inline-Skriptbearbeitung hat, also könnte ich die return-Anweisung nach der pausierten Anweisung manuell hinzufügen und dann STRG + S drücken, um die gesamte Sache erneut auszuführen, aber ich brauche diese Funktion auch für IE, also bin ich Ich hoffe auf eine allgemeine Lösung.
Die Ausführung vorzeitig zu beenden scheint eine einfache Sache zu sein (für den Browser), also erwarte ich eine solche Funktionalität von den Entwicklungswerkzeugen.
Ich habe dies erfolgreich in IE 9 getestet, also poste ich es hier als Antwort: während Sie im Skript-Debugger bei statement_X
pausieren, drücken Sie F10, damit statement_X
noch ausgeführt wird, dann klicken Sie mit der rechten Maustaste auf die letzte Zeile der umschließenden Funktion (die Zeile mit der rechten geschweiften Klammer }
, die den Funktionskörper beendet), und wählen Sie "Setze nächste Anweisung" aus dem Dropdown-Menü. Dies überspringt die Ausführung bis zum Ende der Funktion, als ob es eine void return-Anweisung direkt nach statement_X
geben würde.
Wenn es weitere Anweisungen in der letzten Zeile einer Funktion gibt, wie im folgenden Code gezeigt, klicken Sie mit der rechten Maustaste auf die geschweifte Klammer, damit diese Technik funktioniert.
%Vor%Dies kann manchmal bei Inline-Funktionen oder in minimierten Skripts, die nicht zum Debuggen vorgesehen sind, notwendig sein.
Wenn ich richtig verstehe, können Sie das nicht tun.
Die Debugger (in jedem Fall der Debugger von Chrome) sind selbst JavaScript-basiert.
Diese Jungs benutzen (möglicherweise) eval()
, um den injizierten Code auszuführen. Beim Trawling über den Chrome-Inspektor scheint der Debugger-Code dies schließlich aufzurufen, wenn Sie versuchen, etwas auszuwerten (denke ich):
evalFunction
ist nur ein Alias für eval()
.
Das Problem ist, dass wir in eval keine return-Anweisungen verwenden können, nicht einmal in hartem Code. Es wird dir immer SyntaxError: Illegal return statement
geben.
Also nein, keine Voodoo-Erklärung.
Tags und Links javascript debugging google-chrome-devtools browser