从控制台调用 Javascript 函数
Posted
技术标签:
【中文标题】从控制台调用 Javascript 函数【英文标题】:Calling a Javascript Function from Console 【发布时间】:2012-02-21 17:10:45 【问题描述】:在 Chrome 的 javascript 控制台中,如何调用属于我正在查看的网页中包含的 .js 文件的函数?
【问题讨论】:
【参考方案1】:您可以使用它调用它
window.function_name()
或者直接不用window
点赞
function_name()
【讨论】:
【参考方案2】:控制台将返回 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!'))
当然,如果您需要在加载文档后注册该功能,那么您不能这样做。但你也许可以解决这个问题。
【讨论】:
非常感谢托尼。完美答案【参考方案3】:我刚刚发现了这个问题。我能够通过使用间接来解决它。在每个模块中定义一个函数,我们称之为indirect
:
function indirect(js) return eval(js);
在每个模块中使用该函数,您就可以在其上下文中执行任何代码。
例如如果您的模块中有此导入:
import imported_fn from "./import.js";
然后,您可以通过执行以下操作从控制台获取调用 imported_fn
的结果:
indirect("imported_fn()");
使用eval
是我的第一个想法,但它不起作用。我的假设是,从控制台调用eval
仍然是在控制台的上下文中,我们需要在模块的上下文中执行。
【讨论】:
【参考方案4】:这里基本上有两种情况:
-
您的函数在全局范围内。在这种情况下,只需打开一个控制台并调用它
yourFunction()
您的函数被限定在一些其他函数内,并且不能全局访问。在这种情况下,您可以打开 Sources 选项卡,找到您的 .js 文件,在外部函数底部的任意位置放置断点(如果代码已经运行,您可能需要在此之后刷新页面)并调用 @987654322 @ 在控制台中。此外,在断点时,您可以在控制台中执行window.yourFuncRef = yourFunction
之类的操作,以便稍后随时访问它。
【讨论】:
我尝试了上面的第二个选项,它几乎可以工作,我添加了一行并放置了一个断点,当尝试以 var = function 的形式调用我的函数时,我得到一个错误“未捕获ReferenceError: showBuy is not defined",但控制台本身向我展示了该功能,我只需要 tab+enter 如果未定义,这可能意味着您在函数的实际定义之前放置了一个断点。也许您可以提供有关如何定义函数以及在何处设置断点的更多详细信息?【参考方案5】:这是一个较旧的线程,但我只是搜索并找到了它。我是使用 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(Chrome):http://imgur.com/a/dLnRX
【讨论】:
【参考方案6】:如果它在闭包内,我敢肯定你不能。
否则,您只需执行functionName();
并按回车键。
【讨论】:
不适合我:functionName();
在 firebug 中可以,在 Chrome 开发者工具中显示“未定义”。
undefined
是函数的返回值。 Chrome 的开发工具会自动打印从控制台调用的任何函数的返回。如果它不起作用,您会看到红色的 ReferenceError: functionName is not defined
。
没有人会被这种行为弄糊涂,对吧? :)以上是关于从控制台调用 Javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章
从 Java Applet 调用 Javascript 函数