如何在浏览器中调试动态加载的JavaScript(使用jQuery)';调试器本身是什么?
动态添加的脚本未显示在浏览器的调试器的脚本部分中 说明: 我需要使用并且已经使用了如何在浏览器中调试动态加载的JavaScript(使用jQuery)';调试器本身是什么?,javascript,debugging,dynamic,loaded,Javascript,Debugging,Dynamic,Loaded,动态添加的脚本未显示在浏览器的调试器的脚本部分中 说明: 我需要使用并且已经使用了 if( someCondition == true ){ $.getScript("myScirpt.js", function() { alert('Load Complete'); myFunction(); }); } 因此,myScript.js可以在满足某些条件时动态加载。。。 只有在加载整个脚本后才能调用myFunction 但是浏览器并没有在调试器的脚本部分
if( someCondition == true ){
$.getScript("myScirpt.js", function() {
alert('Load Complete');
myFunction();
});
}
因此,myScript.js可以在满足某些条件时动态加载。。。
只有在加载整个脚本后才能调用myFunction
但是浏览器并没有在调试器的脚本部分显示动态加载的myScript.js
是否有其他方法可以实现所有目标,从而能够在浏览器中调试动态加载的脚本?您可以为动态加载的脚本命名,以便在Chrome/Firefox JavaScript调试器中显示。为此,请在脚本末尾添加注释:
//# sourceURL=filename.js
然后,该文件将在“源”选项卡中显示为filename.js
。根据我的经验,你可以在名称中使用,但如果使用/,我会有奇怪的行为
有关更多信息,请参阅:
我尝试使用OP建议的“//#sourceURL=filename.js”作为解决方法,但它仍然没有显示在“源”面板中,除非它已经存在于我的选项卡中,而之前它产生了异常
编写“debugger;”行迫使它在该位置中断。然后,一旦它出现在“源”面板的“我的”选项卡中,我就可以像普通一样设置断点并删除“debugger;”行。注意,以这种方式出现在“源”选项卡中的源文件将出现在(无域)组中,如果您想调试它,您需要添加一个
调试器代码>行在代码中,执行该行(通常在源文件开始执行时),然后在任何需要的地方添加断点
在调试生产阶段时,可能没有调试器代码>行在您的代码中,您可以通过使用CharlesProxy将本地映射到“插入debbuger行的源文件的新副本”来实现这一点。您可以在脚本文件或脚本标记的末尾使用/#sourceURL=
和/#sourceMappingURL=
注意:/@sourceURL
和/@sourceMappingURL
不推荐使用。在IE中尝试跟踪此类内容时,我打开开发工具(F12),然后使用控制台中的以下行找到断点的位置:
debugger;myFunction();
这将切换到debugger选项卡,您可以在其中进入myFunction()
并设置断点 请注意,它已更改为//#,尽管//@在Chrome中仍然有效。html文件中的脚本也可以用同样的方式命名。小心!不要在“=”符号前后留空格。对我来说,js文件显示在名为“(无域)”的组中的源列表中。也许值得一提,因为我一开始就错过了!只是一个提示。Chrome调试器将这些伪javascript文件抛出到Sources选项卡中的“(无域)”节点元素中,至少在本地主机上调试时是这样。这就是我发现它们的地方。另一个需要注意的是评论风格。您给出的“对//@sourceURL的弃用”链接同时提到了“//#sourceURL=”和“/*#sourceURL=”。这是因为这也可以用于CSS,在CSS中必须使用块注释,因为单行“/”注释无效。令我惊讶的是,您不能在javascript中使用“/*sourceURL=”。它只是被忽略了。好吧,大多数JavaScript迷你程序都会从生产阶段删除这些行,这对生产错误诊断毫无用处。它也可能会出现在“源”选项卡下的(无域)列表中。我还需要使用调试器代码>,并且在加载脚本时必须打开DevTools。还有一点额外的信息:使用browsertools://作为协议,如/#sourceURL=bro中所示wsertools://yourdomaingoeshere.com/action-openuwws.js
调试器可能重复使用调试器
要在动态加载的脚本中自动停止,请参阅更多不推荐信息:当然,但是afaik大多数迷你们会在生产阶段删除这些行。这节省了我的时间!不管我做了什么,直到我输入调试器命令,文件才显示出来。之后,即使在我删除了调试器命令之后,它仍然会在页面重新加载和调试会话中保持不变。