在 Chrome 的 JavaScript 控制台中,如何调用属于我正在查看的网页中包含的 .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)]。
我无法从开发人员工具控制台运行函数,但后来我发现了这个
https://developer.mozilla.org/en-US/docs/Tools/Scratchpad
我能够将代码添加到便签本,突出显示并运行一个函数,根据所附的屏幕截图输出到控制台。
我还添加了 Chrome“Scratch JS”扩展:看起来它提供了与 Firefox 开发者工具中的 Scratchpad 相同的功能(下面的屏幕截图)。
https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn
基本上,这里有两种情况:
yourFunction()
yourFunction()
在控制台中。另外,在断点处,您可以在控制台中执行类似 window.yourFuncRef = yourFunction
的操作,以便稍后能够随时访问它。您可以使用
调用它window.function_name()
或直接没有
window
喜欢
function_name()
我刚刚发现这个问题。我能够通过使用间接来解决这个问题。在每个模块中定义一个函数,我们称之为
indirect
:
function indirect(js) { return eval(js); }
通过每个模块中的该函数,您可以在其上下文中执行任何代码。
例如如果您的模块中有此导入:
import { imported_fn } from "./import.js";
然后您可以通过执行以下操作获得从控制台调用
imported_fn
的结果:
indirect("imported_fn()");
使用
eval
是我的第一个想法,但它不起作用。我的假设是,从控制台调用 eval
仍保留在控制台上下文中,而我们需要在模块上下文中执行。
我认为你的问题可能是你将“.js”文件作为模块导入。
<script type="module" src="example.js"></script>
我遇到了同样的问题,删除“type =“module””属性对我有用。
<script src="example.js"></script>