Mar*_*ine 6 jquery bookmarklet
我正在创建一个bookmarklet,当然我想使用jQuery.但是,如果我在网站上包含jQuery(在头部添加脚本标记),那么网站本身是否会工作,如果它还有其他一些js?
Martti Laine
它会坏吗?....也许:)
在我的脑海中,有两个非常常见的原因会导致这种情况发生。如果他们使用另一个库,该库使用$来作为其主要对象,那么您将遇到冲突,但这可以通过 来解决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
Run Code Online (Sandbox Code Playgroud)
另一个是他们已经加载了 jQuery(也可能是不同的版本)。我只是jQuery在加载脚本之前添加一个对象测试,如下所示:
if (typeof jQuery == 'undefined') { //load jQuery }
//jQuery has been loaded, either by your or originally, keep going...
Run Code Online (Sandbox Code Playgroud)
这个针对已加载的解决方案有一个警告,如果他们有旧版本的 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.
Run Code Online (Sandbox Code Playgroud)