Chr*_*mer 11 javascript debugging jquery
我有一个ASP.NET MVC项目,通过jQuery的$ .get方法使用一些简单的AJAX功能,如下所示:
$.get(myUrl, null, function(result) {
$('#myselector').html(result);
});
Run Code Online (Sandbox Code Playgroud)
这里的内容量相对较低 - 通常是一个短文本的单一div.但是,有时我也会在页面中注入一些javascript.在某些时候,当我动态地将脚本包含到本身动态添加到页面的内容中时,脚本仍会运行,但它不再可用于调试器.在VS2008中,任何断点都会被忽略,当我使用"调试器"语句时,我会收到一个消息框,说"此位置没有可用的源代码".对于VS2008调试器和Firefox中的Firebug调试器,这都失败了.我已经尝试过在我的动态内容中包含内联脚本以及从这个动态内容引用单独的js文件 - 这两种方式似乎都会导致调试器无法使用的脚本.
所以,我的问题是双重的:
小智 1
我还不能发表评论,但我也许可以帮助回答。正如 qwerty 所说,firefox 控制台可能是最佳选择。我建议去完整的酒吧并获得萤火虫。在我使用它的 3 年里,它从未漏过代码。
您还可以更改添加注入的 javascript 的方式,看看这是否会影响您正在使用的调试器。(我猜你正在使用 Microsoft 的 IDE?)。无论如何,我发现为 IE 注入 javascript 的最佳方法是将其作为appendChild 放在头部。在不可行的情况下,可以使用 eval 函数(我和你一样讨厌使用它)。这是我使用的 AJAX IE 修复程序代码。我也将它用于野生动物园,因为它具有类似的行为。如果您也需要,只需更改浏览器条件检查(IE 的 document.all,Safari 为 navigator.userAgent.toLowerCase() == 'safari';)。
function execajaxscripts(obj){
if(document.all){
var scripts = obj.getElementsByTagName('script');
for(var i=0; i<scripts.length; i++){
eval(scripts[i].innerHTML);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从来没有使用过 jquery,我更喜欢原型然后是 dojo 但是......我认为它看起来像这样:
$.get(myUrl, null, function(result) {
$('#myselector').html(result);
execajaxscripts(result);
});
Run Code Online (Sandbox Code Playgroud)
一个问题是,eval 调试错误可能不会被捕获,因为它创建了解释器的另一个实例。但值得尝试……或者其他。使用不同的调试器:D
归档时间: |
|
查看次数: |
676 次 |
最近记录: |