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()
的问题在于它从不缓存所请求的文件,因此在每次调用时它都会添加一些随机字符串以防止缓存(这也阻止我们调试代码)。 但是有解决方法:
-
在调用
.getScript()
之前设置全局.ajax
缓存(不推荐.getScript()
:$.ajaxSetup({ cache: true });
-
使用直接
.ajax()
调用(推荐):$.ajax({ dataType: "script", cache: true, url: url }
-
如果它是您自己的脚本,您可以随时添加
debugger;
命令在任何地方强制浏览器进入调试模式(必须打开DevTools)。