Aufrufen einer Javascript-Funktion von der Konsole aus

Antworten:

72

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.

Kevin Ennis
quelle
1
nicht für mich: functionName();ist ok in firebug zeigt 'undefined' in Chrome Developer Tools.
lrkwz
81
undefinedist 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 definedin rot sehen.
Kevin Ennis
23

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.

Tony Deacon
quelle
Vielen Dank Tony. Perfekte Antwort
Shah
6

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

Geben Sie hier die Bildbeschreibung ein

Bild 2 (Chrome): http://imgur.com/a/dLnRX

Geben Sie hier die Bildbeschreibung ein

Victoria Stuart
quelle
2

Sie können es mit window.function_name () oder direkt function_name () aufrufen.

naresh
quelle
1

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_fnvon der Konsole abrufen, indem Sie Folgendes tun:

indirect("imported_fn()");

Verwenden evalwar mein erster Gedanke, aber es funktioniert nicht. Meine Hypothese ist, dass das Aufrufen evalvon der Konsole im Kontext der Konsole bleibt und wir im Kontext des Moduls ausführen müssen.

Adrian
quelle