gpt4 book ai didi

javascript - 如果 jQuery 不存在,则使用 JavaScript 动态包含它

转载 作者:数据小太阳 更新时间:2023-10-29 04:04:02 25 4
gpt4 key购买 nike

我正在为自己编写一个小的 JavaScript 工具,我计划提供给其他人使用,它使用 jQuery。我对这个小实用程序的梦想是让人们能够从远程源包含单个 .js 文件,并在加载该文件时检查是否已包含 jQuery 并,如果有,请确保它是一个足够新的版本,以便与我的代码需要执行的操作兼容。一些伪代码可以更清楚地解释我的问题(此代码将出现在我之前提到的单个 .js 文件的顶部):

if jQuery is loaded {
if version is less than (say) 1.3 {
// load latest version of jQuery
}
} else {
// load latest version of jQuery
}

// and do the jQuery.noConflict()
// dance to avoid trampling any other libraries, etc. that the
// user may be utilizing.

// The rest of my code lives here, happy in the knowledge that it's running in
// isolation from the rest of the JS that the page knows about.

我的问题,提炼成三个友好的部分:

  1. 是否可以加载两个不同版本的 jQuery 而不会互相拉扯?
  2. 我可以在加载 jQuery 时停止执行我的 JS 代码,然后继续吗?
  3. 是否可以像我描述的那样使用 noConflict()?还是我应该只使用 jQuery() 调用所有内容而不必理会它?

这里的总体想法是,任何老用户都可以抓取一小段 HTML 并将其放入他们的网站/博客/其他任何内容中,然后让它工作™。由于许多现代发布平台现在都附带 jQuery,我不能只是静静地假设它没有运行并包含它。

感谢您抽出宝贵时间,如果其中任何部分不清楚,或者我是否可以提供额外的上下文/详细信息以使您更容易做出回应,请告诉我。

最佳答案

function doMyStuff(jQueryJustForThisFn) {
// do jQuery stuff!
jQueryJustForThisFn('div').addClass('wow');
}

function check() {
return window.jQuery && jQuery.fn && /^1\.[3-9]/.test(jQuery.fn.jquery);
}

if ( check() ) {

doMyStuff( jQuery );

} else {

var script = document.createElement('script'),

timer = setInterval(function(){
if ( check() ) {
clearInterval(timer);
document.body.removeChild(script);
doMyStuff( jQuery.noConflict(true) );
}
}, 30);

script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js';

document.body.insertBefore( script, document.body.firstChild );

}

关于javascript - 如果 jQuery 不存在,则使用 JavaScript 动态包含它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1973647/

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