我正在创建一个bookmarklet,如果找不到该对象,它将加载jQuery.加载将检查jQuery的版本.代码如下:
@H_404_5@(function(){
var myBkl = {
loadScript: function(src) {
if(window.jQuery && window.jQuery.fn.jquery == '1.3.2'){
return;
}
var s = document.createElement('script');
s.setAttribute('src',src);
s.setAttribute('type','text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
},whenLoaded: function(callback){
if (typeof(window.jQuery) !== 'undefined' && window.jQuery.fn.jquery == '1.3.2') {
callback(window.jQuery);
}
else {
setTimeout((function() {myBkl.whenLoaded(callback); }),100);
}
},init: function($){
console.log($.fn.jquery);
}
};
myBkl.loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js');
myBkl.whenLoaded(myBkl.init);
})();
我使用这个bookmarklet构建器来创建bookmarklet http://subsimple.com/bookmarklets/jsbuilder.htm
显然,如果页面已经加载了jQuery.加载1.3.2脚本将覆盖页面上的window.jQuery对象.我只是想知道有没有让1.3.2加载到另一个自命名变量?使用jQuery.noConflict(true); ?
最佳答案