Javascript jQuery.getScript能否在Chrome开发者工具中将文件显示为资源?
我的代码需要按需加载脚本Javascript jQuery.getScript能否在Chrome开发者工具中将文件显示为资源?,javascript,jquery,Javascript,Jquery,我的代码需要按需加载脚本 function includeJS(uri) { return jQuery.getScript(uri); } includeJS('/path/to/script.js').always(function() { // do something after script is loaded }); 但问题是,与页面上静态包含的其他文件一样,JS文件在Chrome开发工具中不可用。由于这个原因,我不能轻易地设置断点 除了jQuery.getScr
function includeJS(uri) {
return jQuery.getScript(uri);
}
includeJS('/path/to/script.js').always(function() {
// do something after script is loaded
});
但问题是,与页面上静态包含的其他文件一样,JS文件在Chrome开发工具中不可用。由于这个原因,我不能轻易地设置断点
除了jQuery.getScript之外,还有没有其他方法可以在Chrome开发者工具中显示该脚本,并且可以设置断点
编辑:基于当前接受的答案添加解决方案(我仍然会考虑其他解决方案,但这对我来说似乎有用)
您可以简单地附加一个
script
标记,并使用onload
处理程序执行加载后操作。例如:
与
$相比,您对失败加载的控制略少。getScript提供了一些功能,但该脚本确实出现在开发工具中。实际上它总是存在的。请看一个例子。下面是它的样子:。
.getScript()
的问题在于它从不缓存请求的文件,因此每次调用时它都会添加一些随机字符串以防止缓存(这也会阻止我们调试代码)。但有解决办法:
在调用.getScript()
之前,设置全局.ajax
缓存(不推荐):
使用direct.ajax()
调用(推荐):
如果它是您自己的脚本,则始终可以添加调试器代码>命令anywhere强制浏览器进入调试模式(必须打开DevTools)
我不知道我的jQuery.getScript或Chrome版本是否有问题,但它似乎从未在Chrome的“Sources”选项卡中显示该脚本。但是,我注意到,当按照建议设置cache:true时,HTTP请求不再包含参数,并正确缓存响应。放置“调试器”是我一直在做的事情,然而,Chrome总是将脚本显示为“VM”脚本,类似于使用“eval”执行的脚本。我刚刚尝试了google Chrome版本63.0.3239.132(正式构建)(64位),但它不起作用。我认为这是我将使用的解决方案,起初我尝试使用jQuery(“”)但我认为jQuery在幕后发挥了一些神奇的作用——手动执行document.createElement()工作正常。
function includeJS(uri) {
var def = $.Deferred();
var script = document.createElement('script');
script.src = uri;
script.onload = function() {
def.resolve();
}
script.onerror = function() {
def.reject();
}
document.body.appendChild(script);
return def.promise();
}
var script = document.createElement('script');
script.src = 'my_external_script.js';
script.onload = loadHandler;
document.body.appendChild(script);
$.ajaxSetup({
cache: true
});
$.ajax({
dataType: "script",
cache: true,
url: url
}