gpt4 book ai didi

javascript - $.getScript 第二次可以工作吗?

转载 作者:行者123 更新时间:2023-11-28 09:44:44 24 4
gpt4 key购买 nike

我想知道这是否是 jQuery 的 $.getScript() 的常见问题?我有一个使用此功能的 JS 脚本。

我的 JS 文件真的很长,我认为发布整个脚本对我来说不是一个好主意,所以我只是好奇这是否是一个常见问题?

我有一个 $.ajax 函数,该函数在按下按钮后运行

$.ajax({
url: thisURL,
type: "POST",
crossDomain:true,
data: searliziedData
}).done(function(data){

var jsPaths = ["http://www.example.com/js/jquery.jscrollpane.min.js","http://www.example.com/js/jquery.hoverIntent.minified.js","http://www.example.com/js/jquery.mousewheel.js","http://www.example.com/js/image_contents.js"];
$.each(jsPaths, function(i, jsPath) {
$.getScript(jsPath);
});

// do something
});

因此,在我第二次按下按钮之前,脚本不会插入到网站中。我还尝试在 $.ajax 之前插入 $.getScript 代码,并且再次按下它才会执行。

我从这段代码中没有得到任何错误或任何东西。

我还在 $.each() 函数中放入了一个 alert("test") 并执行。

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

最佳答案

每次我遇到 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 文档之间的执行顺序。这是一个您只需调试以查看是否缺少任何依赖项的问题。

关于javascript - $.getScript 第二次可以工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com