Wenn eine Anweisung in den Entwicklungstools des Browsers pausiert wird, wie kann die Ausführung unmittelbar nach dieser Anweisung beendet werden?

8

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.

    
Šime Vidas 19.04.2012, 14:14
quelle

2 Antworten

2

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.

    
GOTO 0 24.04.2012, 23:00
quelle
0

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):

%Vor%

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.

    
Manishearth 22.04.2012 14:17
quelle