gpt4 book ai didi

javascript - 如果其他脚本的加载顺序未知,我可以使用 noConflict() 限制我需要的 jQuery 版本的范围吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:43 24 4
gpt4 key购买 nike

我想在我无法控制的页面(电子商务平台)中异步包含特定版本的 jQuery,并且只在我的脚本中使用它。该页面可能会加载其他脚本,这些脚本可能也想做同样的事情,但我不知道该页面包含我的脚本与其他脚本的顺序。

使用 jQuery.noConflict([removeAll]),我可以确保:

  1. 我的脚本获得了正确版本的 jQuery
  2. 我不会为其他人覆盖 jQuery 版本?

我认为这个问题与大多数其他多 jQuery 版本问题不同,因为人们对脚本包含顺序做出假设并且不使用带有回调的异步 jQuery 加载。

谢谢!

最佳答案

这是我的尝试(有人可以确认这没问题吗?):

myscript.js

(function() {

var myJQuery;

function loadjQuery(url, callback) {
var runCallbackOnSuccess = function() {
if (typeof jQuery != "undefined") {
myJQuery = jQuery.noConflict(true); // NOTICE THIS LINE
callback();
}
};
var scriptTag = document.createElement("script");
scriptTag.setAttribute("src", url);
scriptTag.onload = runCallbackOnSuccess;
document.getElementsByTagName("head")[0].appendChild(scriptTag);
}

function doSomethingInMyScript() {
myJQuery(document).ready(....);
}

loadjQuery("https://code.jquery.com/jquery-A.B.C.min.js", doSomethingInMyScript);
})();

otherscript.js(在我的控制之外,但假设它是这样的)

(function() {
function loadjQuery(url, callback) {
<same as above, but without the noConflict() call>
}

function doSomethingInOtherScript() {
jQuery(document).ready(....);
}

loadjQuery("https://code.jquery.com/jquery-X.Y.Z.min.js", doSomethingInOtherScript);
})();

此代码在以下情况下是否有效:

  1. 页面是先包含myscript.js还是otherscript.js
  2. myscript.js 的回调函数先执行还是otherscript.js 的回调函数先执行?

我怀疑只要在加载每个相应的 jQuery 后立即执行回调函数就应该没问题,而来自其他脚本的代码不可能在 jQuery 加载和回调执行之间交错。

关于javascript - 如果其他脚本的加载顺序未知,我可以使用 noConflict() 限制我需要的 jQuery 版本的范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331083/

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