根据我最近的问题,我已经为动态加载部分视图创建了一些JavaScript函数。因此,我无法调试任何动态加载JavaScript。因为所有加载的JavaScript都将由“eval”函数计算
然而,我找到了一些方法来创建新的JavaScript,方法是使用以下脚本将脚本动态创建到当前文档的标题中。所有加载的脚本都将显示在HTMLDOM中(您可以使用任何调试器找到它)
var script=document.createElement('script'))
script.setAttribute(“类型”、“文本/javascript”)
script.text=“警报('Test!');”;
document.getElementsByTagName('head')[0].appendChild(脚本);
顺便说一下,大多数调试器(IE8开发者工具栏、Firebug和Google Chrome)不能在任何动态脚本中设置断点。因为可调试脚本必须在页面加载后第一次加载
您是否有在动态脚本内容或文件中调试的想法
更新1-添加测试源代码
您可以使用以下xhtml文件尝试调试某个变量值
<;!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.0 Strict//EN”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>;
<;html xmlns=”http://www.w3.org/1999/xhtml“>;
<;头>;
<;标题>;动态加载脚本测试</标题>;
<;script type=“text/javascript”>;
函数页_加载()
{
var script=document.createElement('script')
setAttribute(“id”、“dynamicLoadingScript”);
setAttribute(“type”、“text/javascript”);
script.text=“var someVariable=0;\n”+
“someVariable=window.outerWidth;\n”+
“警惕(某些变量);”;
document.getElementsByTagName('head')[0].appendChild(脚本);
}
</脚本>;
</头>;
<;body onload=“page_load();”>;
</车身>;
</html>;
从答案来看,我只是在FireBug中测试它。结果应如下图所示显示
alt文本http://d7cgnq.bay.livefilestore.com/y1pJGV27qEARXzZhsMMhPD5z0OxAtnkQK8eKeEXMAxuHjsuWeAq1aGl7sTISRNqVv3lw8ghyxE_GorlwSJDvTql0m0ugSGXPaY-/undebugable-firebug-html.PNG
请查看页面加载后添加的“dynamicLoadingScript”脚本。
alt文本http://d7cgnq.bay.livefilestore.com/y1pz_RwqjgeVqe2mAlUZha0PalpPdP0X5AiwJcQhYahERlnbPDdZpb-_d1e96Q-14raSDMJOBsdcV9jsi4B5yCUDqm41Wc3h0yk/undebugable-firebug-script.PNG
但在FireBug的脚本选项卡中找不到它
更新2-在动态加载脚本中创建调试断点
alt文本http://d7cgnq.bay.livefilestore.com/y1peKdIMOztXss-pc8PlJEmaGov_0ShYnLsuDdK5OLETbCG0UpkX6Te29w0YW2pNKaD_0ANAiizh2GdGPAAp_1q0JWAETo4Qoiw/Debugger-VS2010.png
alt文本http://d7cgnq.bay.livefilestore.com/y1pUeHaHoTXj0WBl74fnTrXwdr_y7s7h8jNKfslSONgshzZBpUddGHNBWA9cXRabo3HAl3QazeozrCABo7pNVQc1Acl-UXXbHFE/Debugger-GoogleChrome.png
以上两幅图都显示了在脚本的某行中插入“debugger;”语句可以在动态加载脚本中触发断点。但是,这两个调试器都不会在断点处显示任何代码。因此,这样做是没有用的
谢谢,
同样,也可以使用chrome。Chrome有一个功能,你可以指定一个解析器属性,让动态JS片段显示为一个文件,然后可以浏览到并设置断点
需要设置的属性是
/#sourceURL=dynamicScript.js
其中dynamicScript.js是应显示在脚本文件浏览器中的文件名
更多信息请点击此处
保罗·爱尔兰(Paul Irish)在他关于工具和工具的精彩演讲中也简要地谈到了这一点;Webapp开发堆栈