ChromeのJavaScriptコンソールで、表示しているWebページに含まれる.jsファイルに属する関数を呼び出すにはどうすればよいですか?
それがクロージャ内にある場合、私はあなたができないと確信しています。
それ以外の場合は、functionName();
を実行し、リターンを押します。
コンソールがReferenceErrorを返す場所の例は、JQueryドキュメントの準備ができた関数内に関数を配置することです
//this will fail
$(document).ready(function () {
myFunction(alert('doing something!'));
//other stuff
}
成功するには、ドキュメント準備機能の外に機能を移動します
//this will work
myFunction(alert('doing something!'));
$(document).ready(function () {
//other stuff
}
次に、コンソールウィンドウで、関数名を「()」と入力して関数を実行します
myFunction()
また、関数の本体を印刷して、関数の機能を思い出させることができます。これを行うには、関数名から「()」を省略します
function myFunction(alert('doing something!'))
もちろん、ドキュメントのロード後に関数を登録する必要がある場合は、これを実行できませんでした。しかし、あなたはそれを回避できるかもしれません。
これは古いスレッドですが、検索して見つけました。私はWeb開発ツールを初めて使用します。主にFirefox開発ツール(Firefox v.51)ですが、Chrome DevTools(Chrome v.56)]もあります。
Developer Toolsコンソールから機能を実行できませんでしたが、これを見つけました
https://developer.mozilla.org/en-US/docs/Tools/Scratchpad
そして、スクラッチパッドにコードを追加し、機能を強調表示して実行し、添付のスクリーンショットごとにコンソールに出力することができました。
Chrome "Scratch JS"拡張も追加しました。FirefoxDeveloper ToolsのScratchpadと同じ機能を提供しているようです(下のスクリーンショット)。
https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn
画像1(Firefox): http://imgur.com/a/ofkOp
画像2(Chrome): http://imgur.com/a/dLnRX
window.function_name()または直接function_name()を使用して呼び出すことができます
この問題を発見しました。インダイレクションを使用して回避できました。各モジュールで関数を定義し、それをindirect
と呼びましょう:
function indirect(js) { return eval(js); }
各モジュールでその関数を使用すると、そのコンテキストで任意のコードを実行できます。
例えば。モジュールにこのインポートがある場合:
import { imported_fn } from "./import.js";
これにより、コンソールからimported_fn
を呼び出した結果を取得できます:
indirect("imported_fn()");
eval
を使用することが最初に考えられましたが、機能しません。私の仮説は、コンソールからeval
を呼び出すことはコンソールのコンテキストにとどまり、モジュールのコンテキストで実行する必要があるということです。