2011-12-15 110 views
1

可能重複:
jQuery and MooTools Conflict的Jquery Mootools的衝突

我遇到一些麻煩,在這裏,我加載jQuery的,如果它尚未才能運行加載我的腳本。我的腳本被插入別人網站的body標籤中。 我的問題是,jquery與mootools衝突只是加載它(jQuery)。

這裏是我的腳本:

var attemptCount=0; 

if(typeof jQuery=='undefined') { 
    var script=document.createElement('script'); 
    script.type='text/javascript'; 
    script.src='https://ajax.googleapis.com/ajax/.../1.6.2/jquery.min.js'; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} 
function init(){ 
    if(arguments.callee.done) return; 
    if(typeof jQuery!='undefined'){ 
     jQuery.noConflict(); 
     arguments.callee.done=true; 
     // do some jquery stuff i.e. jQuery('...').etc... 
    } 
} 
function waitForJQuery(){ 
    if(typeof jQuery!='undefined'){ 
     init(); 
     return; 
    } 
    if(attemptCount<100){ 
     setTimeout(waitForJQuery,100); 
    } 
    return; 
} 
if(document.addEventListener){ 
    document.addEventListener("DOMContentLoaded",init,false); 
} 
else if(document.attachEvent){ 
    waitForJQuery(); 
} 
window.onload=init; 

任何幫助將非常感激。

+1

注意:您可以使用`script.onload = init;方法`你不需要使用`的addEventListener()`和`的setTimeout( )`。 – kubetz 2011-12-15 08:52:34

+0

謝謝,我會試試看。 – Sparkup 2011-12-15 09:00:47

回答

-1

這裏的方法可以嘗試:

// Add jQuery 
var GM_JQ = document.createElement('script'); 
GM_JQ.src = "http://jquery.com/src/jquery-latest.js"; 
GM_JQ.type = "text/javascript"; 
document.getElementsByTagName('head')[0].appendChild(GM_JQ); 

// Check if jQuery's loaded. 

function GM_wait() { 
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); } 
else { $ = unsafeWindow.jQuery; letsJQuery(); } 
} 

GM_wait(); 

// All your GM code must be inside this function. 
function letsJQuery() { 

alert("cheers"); 

} 
+0

這似乎是GreaseMonkey特定的,這不是OP所要求的... – AKX 2011-12-15 09:08:44

0

我相信jQuery的需要是MooTools的前初始化爲$是一個別名,jQuery有解除綁定這一點,如果它不是的能力,也許值得一試鑑於你的情況,你不會太難。

<p>jQuery sets this paragraph's color to red but MooTools sets the border color.</p> 
    <script type="text/javascript" src="jquery-1.x.x.js"></script> 
    <script type="text/javascript"> 
    //no conflict jquery 
    jQuery.noConflict(); 
    //jquery stuff 
    (function($) { 
     $('p').css('color','#ff0000'); 
    })(jQuery); 
    </script> 
    <script type="text/javascript" src="moo1.x.js"></script> 
    <script type="text/javascript"> 
    //moo stuff 
    window.addEvent('domready',function() { 
     $$('p').setStyle('border','1px solid #fc0'); 
    }); 
    </script> 

來源:http://davidwalsh.name/jquery-mootools

0

什麼MooTools的版本是您使用? Mootools將「自動放棄」$。

您是否使用$?編寫了jQuery和mootools的代碼?

如果是這樣,你需要手動查找在語言中的至少一個美元符號的埃維實例,並具有以下

jQuery的$替換()成爲jQuery的()

對於Mootools的$ ()變成document.id() // FYI這是moo Core和更多的首選編碼模式,因爲1.3

希望這有助於!

PS,如果你完成這一步就不會有衝突:)