我有一个通过jQuery的$.getScript
函数动态添加脚本引用的页面。脚本加载和执行都很好,所以我知道引用是正确的。但是,当我向任何脚本添加" debugger“语句以允许我在调试器(如VS.Net、Firebug等)中单步执行代码时,它不起作用。jQuery加载脚本的方式似乎阻止了调试器找到文件。
有没有人有解决这个问题的办法?
发布于 2011-09-21 09:57:01
在JQuery 1.6(可能是1.5)中,您可以不使用getScript,而使用jQuery.ajax()。然后设置crossDomain:true,你会得到同样的效果。
错误回调将不起作用。所以你最好不要像下面这样设置它。
但是,我设置了一个定时器,并成功清除了它。10秒后,如果我没有听到任何声音,我就认为这个文件是错误的。
jQuery.ajax({
crossDomain: true,
dataType: "script",
url: url,
success: function(){
_success(_slot)
},
error: function(){
_fail(_slot);
}
})
发布于 2011-06-20 00:27:38
尝尝这个,
jQuery.extend({
getScript: function(url, callback) {
var head = document.getElementsByTagName("head")[0];
var ext = url.replace(/.*\.(\w+)$/, "$1");
if(ext == 'js'){
var script = document.createElement("script");
script.src = url;
script.type = 'text/javascript';
} else if(ext == 'css'){
var script = document.createElement("link");
script.href = url;
script.type = 'text/css';
script.rel = 'stylesheet';
} else {
console.log("Неизветсное расширение подгружаемого скрипта");
return false;
}
// Handle Script loading
{
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
if (callback)
callback();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
}
};
}
head.appendChild(script);
// We handle everything using the script element injection
return undefined;
}
});
发布于 2015-05-09 03:52:01
有一个简单的方法可以用Chrome来调试它。
1-在您想要调试的行上编写一个console.log("something")。
2-查看控制台以获取该日志。
3-单击日志前面的地址链接。
4-在该行上设置断点。
https://stackoverflow.com/questions/690781
复制相似问题