jQuery.getScript可以在Chrome Developer Tools中将该文件显示为资源吗?

我的代码需要按需加载脚本。

function includeJS(uri) { return jQuery.getScript(uri); } includeJS('/path/to/script.js').always(function() { // do something after script is loaded }); 

但问题是,Chrome文件将无法在Chrome开发人员工具中使用,就像页面上静态包含的其他文件一样。 由于这个我不能轻易放断点。

有没有jQuery.getScript的替代方案,它还会在Chrome开发者工具中显示能够提供断点的脚本?


编辑:根据当前接受的答案添加解决方案(我仍然会考虑其他解决方案,但这似乎对我有用)

 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(); } 

您可以简单地附加script标记,并使用onload处理程序来执行后加载操作。 示例: https : //jsfiddle.net/0nu2dusu/

 var script = document.createElement('script'); script.src = 'my_external_script.js'; script.onload = loadHandler; document.body.appendChild(script); 

您对失败的加载的控制略低于$.getScript提供的,但该脚本确实显示在开发工具中。

实际上它总是在那里。 只需看一下jQuery.getScript()站点中的示例。 这是它的样子: http : //i.imgur.com/LMFFAag.png 。 .getScript()的问题在于它从不缓存所请求的文件,因此在每次调用时它都会添加一些随机字符串以防止缓存(这也阻止我们调试代码)。 但是有解决方法:

  1. 在调用.getScript()之前设置全局.ajax缓存(不推荐.getScript()

     $.ajaxSetup({ cache: true }); 
  2. 使用直接.ajax()调用(推荐):

     $.ajax({ dataType: "script", cache: true, url: url } 
  3. 如果它是您自己的脚本,您可以随时添加debugger; 命令在任何地方强制浏览器进入调试模式(必须打开DevTools)。