我有两个版本的jQuery,为什么noConflict()不允许我使用正确的?

时间:2012-12-31 15:37:50

标签: jquery

我有一个boolmarklet加载这个脚本,它加载jQuery。我尽量避免与网站上任何已加载的jQuery冲突。

当我这样做时:

/* Loading jquery and making sure we don't enter in conflict with
another js lib or another jquery */
var oldJquery;

if (typeof jQuery !== "undefined") { 
    log('jQuery is present. Setting noConflict() on', jQuery().jquery)
    oldJquery = jQuery.noConflict(true); 
} else {
    oldJquery= false;
}

log('Starting to load jQuery')
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://code.jquery.com/jquery-1.8.3.min.js?' + (new Date().getTime());
script.onreadystatechange = function() {
    setTimeout(function(){
    log('jQuery is loaded. Starting BM with', $().jquery)
    bookmarklet(jQuery.noConflict(true))
    if (oldJquery){
        log('Restore old jQuery reference')
        jQuery = oldJquery;
        $ = jQuery;
    }
    }, 4000)

};
script.onload = script.onreadystatechange
head.appendChild(script);

我最终得到了这个输出:

############# RESTART #############

jQuery is present. Setting noConflict() on1.4.4
Starting to load jQuery
jQuery is loaded. Starting BM with 1.4.4
Scratchpad (ligne 312)
BM is started with jquery version 1.4.4
Scratchpad (ligne 27)
Display alert: Please wait...
Load view jQuery viewport plugin and wait for DOM ready
Restore old jQuery reference

为什么在“BM以jquery版本启动”中没有I 1.8.2作为jquery版本?

我尝试了($|jQuery).noConflict([true])的各种组合而没有成功。清空缓存似乎没有用,我无论如何都不可能要求最终用户这样做。

0 个答案:

没有答案