在 Chrome 的 JavaScript 控制台中,如何调用属于我正在查看的网页中包含的 .js 文件的函数?
6 回答
如果它在封闭内,我很确定你不能。
否则,您只需执行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)]。
我无法从开发人员工具控制台运行功能,但后来我发现了这个
https://developer.mozilla.org/en-US/docs/Tools/Scratchpad
我能够将代码添加到 Scratchpad,突出显示并运行一个函数,根据附加的屏幕截图输出到控制台。
我还添加了 Chrome 的“Scratch JS”扩展:看起来它提供了与 Firefox 开发者工具中的 Scratchpad 相同的功能(截图如下)。
https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn
图 1(火狐):http: //imgur.com/a/ofkOp
图 2(铬):http: //imgur.com/a/dLnRX
您可以使用调用它
window.function_name()
或直接不window
喜欢
function_name()
基本上,这里有两种情况:
- 您的功能在全球范围内。在这种情况下,只需打开一个控制台并调用它
yourFunction()
- 您的函数被限定在其他一些函数内,并且不能全局访问。在这种情况下,您可以打开 Sources 选项卡,找到您的 .js 文件,在外部函数底部的任意位置放置断点(如果代码已经运行,您可能需要在此之后刷新页面)并
yourFunction()
在控制台中调用. 此外,在断点时,您可以window.yourFuncRef = yourFunction
在控制台中执行类似操作,以便以后随时访问它。
我刚刚发现了这个问题。我能够通过使用间接来解决它。在每个模块中定义一个函数,让我们调用它indirect
:
function indirect(js) { return eval(js); }
使用每个模块中的该函数,您就可以在其上下文中执行任何代码。
例如,如果您的模块中有此导入:
import { imported_fn } from "./import.js";
imported_fn
然后,您可以通过执行以下操作从控制台获取调用结果:
indirect("imported_fn()");
使用eval
是我的第一个想法,但它不起作用。我的假设是eval
从控制台调用仍然在控制台的上下文中,我们需要在模块的上下文中执行。