Wie rufe ich in der JavaScript-Konsole von Chrome eine Funktion auf, die zu einer .js-Datei gehört, die auf der angezeigten Webseite enthalten ist?
Antworten:
Wenn es sich in einem Verschluss befindet, bin ich mir ziemlich sicher, dass Sie es nicht können.
Andernfalls müssen Sie nur die functionName();
Eingabetaste drücken.
undefined
ist der Rückgabewert der Funktion. Die Entwicklertools von Chrome drucken automatisch die Rückgabe aller von der Konsole aufgerufenen Funktionen. Wenn es nicht funktioniert hätte, würden Sie ReferenceError: functionName is not defined
in rot sehen.
Ein Beispiel dafür, wo die Konsole ReferenceError zurückgibt, ist das Einfügen einer Funktion in eine JQuery-Dokumentbereitschaftsfunktion
//this will fail
$(document).ready(function () {
myFunction(alert('doing something!'));
//other stuff
}
Um erfolgreich zu sein, verschieben Sie die Funktion außerhalb der Dokumentbereitschaftsfunktion
//this will work
myFunction(alert('doing something!'));
$(document).ready(function () {
//other stuff
}
Geben Sie dann im Konsolenfenster den Funktionsnamen mit dem '()' ein, um die Funktion auszuführen
myFunction()
Es ist auch nützlich, den Funktionskörper ausdrucken zu können, um sich daran zu erinnern, was die Funktion tut. Lassen Sie dazu das '()' im Funktionsnamen weg
function myFunction(alert('doing something!'))
Wenn Sie die Funktion nach dem Laden des Dokuments registrieren müssen, können Sie dies natürlich nicht tun. Aber vielleicht können Sie das umgehen.
Dies ist ein älterer Thread, aber ich habe ihn nur gesucht und gefunden. Ich bin neu in der Verwendung von Web Developer Tools: hauptsächlich Firefox Developer Tools (Firefox v.51), aber auch Chrome DevTools (Chrome v.56)].
Ich konnte keine Funktionen über die Developer Tools-Konsole ausführen, habe diese jedoch gefunden
https://developer.mozilla.org/en-US/docs/Tools/Scratchpad
und ich war in der Lage, Code zum Scratchpad hinzuzufügen, eine Funktion hervorzuheben und auszuführen, die gemäß dem angezeigten Screenshot an die Konsole ausgegeben wurde.
Ich habe auch die Chrome-Erweiterung "Scratch JS" hinzugefügt: Sie bietet anscheinend die gleiche Funktionalität wie das Scratchpad in den Firefox Developer Tools (Abbildung unten).
https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn
Bild 1 (Firefox): http://imgur.com/a/ofkOp
Bild 2 (Chrome): http://imgur.com/a/dLnRX
Ich habe dieses Problem gerade entdeckt. Ich konnte es durch Indirektion umgehen. Definieren Sie in jedem Modul eine Funktion, nennen Sie sie indirect
:
function indirect(js) { return eval(js); }
Mit dieser Funktion in jedem Modul können Sie dann jeden Code im Kontext ausführen.
ZB wenn Sie diesen Import in Ihrem Modul hatten:
import { imported_fn } from "./import.js";
Sie können dann die Ergebnisse des Anrufs imported_fn
von der Konsole abrufen, indem Sie Folgendes tun:
indirect("imported_fn()");
Verwenden eval
war mein erster Gedanke, aber es funktioniert nicht. Meine Hypothese ist, dass das Aufrufen eval
von der Konsole im Kontext der Konsole bleibt und wir im Kontext des Moduls ausführen müssen.
functionName();
ist ok in firebug zeigt 'undefined' in Chrome Developer Tools.