2011-12-15 69 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,如果你完成这一步就不会有冲突:)