gpt4 book ai didi

javascript - 是否可以通过某些调试器(如 WebKit、FireBug 或 IE8 开发人员工具)来调试动态加载 JavaScript?

转载 作者:IT王子 更新时间:2023-10-29 02:44:57 26 4
gpt4 key购买 nike

来自 my recent question ,我已经创建了一些用于动态加载局部 View 的 JavaScript 函数。但是我无法调试任何动态加载的 JavaScript。因为所有加载的 JavaScript 都将由“eval”函数求值。

我找到了一种创建新 JavaScript 的方法,方法是使用以下脚本将脚本动态创建到当前文档的页眉中。所有加载的脚本都将显示在 HTML DOM 中(您可以使用任何调试器找到它)。

var script = document.createElement('script')
script.setAttribute("type","text/javascript")
script.text = "alert('Test!');";

document.getElementsByTagName('head')[0].appendChild(script);

顺便说一句,大多数调试器(IE8 Developer Toolbar、Firebug 和 Google Chrome)不能在任何动态脚本中设置断点。因为可调试脚本必须在页面加载后第一次加载。

在使用动态脚本内容或动态文件时,您有调试的想法吗?

更新 1 - 添加用于测试的源代码

您可以使用以下 xhtml 文件来尝试调试 someVariable 值。

<!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">
<head>
<title>Dynamic Loading Script Testing</title>
<script type="text/javascript">
function page_load()
{
var script = document.createElement('script')
script.setAttribute("id", "dynamicLoadingScript");
script.setAttribute("type","text/javascript");
script.text = "var someVariable = 0;\n" +
"someVariable = window.outerWidth;\n" +
"alert(someVariable);";

document.getElementsByTagName('head')[0].appendChild(script);
}
</script>
</head>
<body onload="page_load();">
</body>
</html>

从答案来看,我只是在 FireBug 中测试它。结果应如下图所示。

alt text

请查看页面加载后添加的“dynamicLoadingScript”。

alt text

但是在FireBug的脚本标签中找不到

更新 2 - 在动态加载脚本中创建调试断点

alt text

alt text

以上两张图片都显示了插入“调试器”;脚本某些行中的语句可以在动态加载脚本中触发断点。但是,两个调试器都不会在断点处显示任何代码。所以,这个没用

谢谢

最佳答案

同样也可以使用 chrome。 Chrome 具有一项功能,您可以在其中指定解析器属性并将动态 JS 片段显示为一个文件,然后可以浏览该文件并设置断点。

需要设置的属性是

//# sourceURL=dynamicScript.js

其中 dynamicScript.js 是应该显示在脚本文件浏览器中的文件的名称。

更多信息 here

Paul Irish 在他关于 Tooling & The Webapp Development Stack 的精彩演讲中也简要地谈到了它

关于javascript - 是否可以通过某些调试器(如 WebKit、FireBug 或 IE8 开发人员工具)来调试动态加载 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com