在Chrome的JavaScript控制台中,如何调用属于我正在查看的网页中包含的.js文件的函数?
Answers:
控制台将返回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)]。
我无法从开发人员工具控制台运行功能,但是后来发现了这一点
https://developer.mozilla.org/zh-CN/docs/Tools/Scratchpad
而且我能够将代码添加到Scratchpad中,突出显示并运行一个功能,并根据附带的屏幕截图输出到控制台。
我还添加了Chrome浏览器的“ Scratch JS”扩展名:它似乎提供了与Firefox开发人员工具中的Scratchpad相同的功能(下面的屏幕截图)。
https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn
图片1(Firefox):http : //imgur.com/a/ofkOp
图片2(Chrome):http://imgur.com/a/dLnRX
我刚刚发现了这个问题。我能够通过使用间接解决它。在每个模块中定义一个函数,让我们称之为indirect
:
function indirect(js) { return eval(js); }
在每个模块中使用该功能,然后可以在其上下文中执行任何代码。
例如,如果您的模块中有此导入:
import { imported_fn } from "./import.js";
然后,您可以imported_fn
通过执行以下操作从控制台获取调用结果:
indirect("imported_fn()");
使用eval
是我的第一个想法,但这是行不通的。我的假设是,eval
从控制台进行的调用仍保留在控制台的上下文中,而我们需要在模块的上下文中执行。
functionName();
在Firebug中,可以在chrome开发人员工具中显示“未定义”。