我正在创建一个bookmarklet,当然我想使用jQuery。但是,如果我在网站上包含jQuery(在头部附加一个脚本标记),那么网站本身是否会工作,如果它还有其他一些js?
Martti Laine
答案 0 :(得分:3)
它会破坏吗?.... 也许:)
我的头脑中有2个非常常见的原因会发生这种情况。如果他们正在使用另一个使用$
作为其主要对象的库,那么您将会遇到冲突,但这可以使用jQuery.noConflict()
进行解析,如下所示:
var $j = jQuery.noConflict(); //give `$` back to whatever had it...
$j("selector").doSomething(); //use the $j you assigned or jQuery from now on
另一个是他们已经加载了jQuery(可能还有不同的版本)。我只需在加载脚本之前添加jQuery
对象测试,如下所示:
if (typeof jQuery == 'undefined') { //load jQuery }
//jQuery has been loaded, either by your or originally, keep going...
这个已经加载的解决方案有一个警告,如果他们有一个旧版本的jQuery,你将只具有该版本的功能。我不知道在页面中加载旧版本和新版本的方法,并且没有很多奇怪的行为......它只是不是为了那样做。
另外,我会结合这两种解决方法来处理已经加载jQuery并且 $
的情况,如下所示:
if (typeof jQuery == 'undefined') {
var used = typeof $ != 'undefined';
//load jQuery
if(used) jQuery.noConflict();
}
window.$j = jQuery;
//always use $j in your script, it'll always be present.