如果我通过bookmarklet包含jQuery,它会破坏网站上的原始javascript吗?

时间:2010-04-25 08:48:09

标签: jquery bookmarklet

我正在创建一个bookmarklet,当然我想使用jQuery。但是,如果我在网站上包含jQuery(在头部附加一个脚本标记),那么网站本身是否会工作,如果它还有其他一些js?

Martti Laine

1 个答案:

答案 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.