1

我想知道这是否是 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") 并被执行。

你可能会问我怎么知道我的脚本没有被执行?我使用谷歌浏览器的检查元素,在资源下我可以看到网站中正在执行哪些脚本。

谢谢你的帮助!

4

1 回答 1

0

每次我getScript()在清除缓存后遇到无法处理第一页加载的问题(或者如果它只在第一次加载时有效),那是因为我有一些问题。

我将在这里过分简化一点:上次我遇到这个时,我正在检查<body>元素是否具有特定的类,但我是在<body>标记本身之前调用脚本。在第一次加载getScript()时不会执行,但在第二次加载时它会执行,因为文档被缓存了。在这种情况下,问题不是特定于getScript(),而是缓存是如何工作的。

另一个常见问题是脚本依赖性,例如:

$.getScript('plugin.js');
$.getScript('developers.js');

如果developers.js依赖于插件功能之类的东西plugin.js,在某些情况下它很可能developers.js无法运行,因为它的下载速度比下载速度快plugin.js,因此首先执行。

对此的解决方案类似于:

$.getScript('plugin.js').done(function(){
    $.getScript('developers.js');
});

您说您的 JS 文件很大,并询问这是否是常见问题。我会说是的。当您有很多事情要做时,很容易忽略脚本相对于彼此和 HTML 文档的执行顺序。这是一个您只需要调试以查看是否缺少任何依赖项的问题。

于 2014-06-17T16:17:42.187 回答