我想知道这是否是jQuery $.getScript()
的常见问题?我有一个使用此功能的JS脚本。
我的JS文件很长,我不认为发布我的整个脚本是个好主意,所以我只是好奇这是否是一个常见的问题?
我有一个$ .ajax函数,在按下按钮后运行
$.ajax({
url: thisURL,
type: "POST",
crossDomain:true,
data: searliziedData
}).done(function(data){
var jsPaths = ["http://www.mysite.com/js/jquery.jscrollpane.min.js","http://www.mysite.com/js/jquery.hoverIntent.minified.js","http://www.mysite.com/js/jquery.mousewheel.js","http://www.mysite.com/js/image_contents.js"];
$.each(jsPaths, function(i, jsPath) {
$.getScript(jsPath);
});
// do something
});
因此,在我按下第二次按钮之前,脚本不会插入到网站中。我还试图在$ .ajax之前插入$ .getScript代码,并且在第二次按下之前它再次执行。
我从此代码中没有任何错误或任何错误。
我还在$ .each()函数中放入了一个`alert(“test”)并执行了。
您可能会问我怎么知道我的脚本没有被执行?我使用google chrome的inspect元素,在资源下我可以看到网站中正在执行哪些脚本。
感谢您的帮助!
答案 0 :(得分:0)
每次我遇到问题getScript()
在清除缓存后没有处理第一页加载(或者它只适用于第一次加载),因为我有一些无序的东西。
我在这里过分简单了:上次我遇到这个问题时,我正在检查<body>
元素是否有特定的类,但我在{{{{{{{ 1}}标记本身。在第一次加载时<body>
不会执行,但在第二次加载时它会执行,因为文档是缓存的。在这种情况下,问题不是getScript()
特有的,而是缓存的工作方式。
另一个常见问题是脚本依赖性,例如:
getScript()
如果$.getScript('plugin.js');
$.getScript('developers.js');
取决于developers.js
中的插件功能,则有时候plugin.js
很可能无法运行,因为它的下载速度比developers.js
快{1}}并首先执行。
对此的解决方案如下:
plugin.js
你说你的JS文件很大,并询问这是否是一个常见问题。我会说是的。当你有很多事情发生时很容易忽略你的脚本相对于彼此和HTML文档的执行顺序。这是一个您只需要调试以查看是否缺少任何依赖项的问题。