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
    }