$ .getScript第二次工作?

时间:2012-08-14 06:36:38

标签: javascript ajax jquery javascript-events

我想知道这是否是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元素,在资源下我可以看到网站中正在执行哪些脚本。

感谢您的帮助!

1 个答案:

答案 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文档的执行顺序。这是一个您只需要调试以查看是否缺少任何依赖项的问题。