2011-12-15 2 views
1

Можно создать дубликат:
jQuery and MooTools ConflictJquery Mootools конфликт

Я бегу в какой-то неприятности, я загружаю JQuery, если он еще не был загружен для запуска мой сценарий. Мой скрипт вставляется где-то в тег тела на чужой сайт. Моя проблема в том, что 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

+0

Спасибо, я попробую. – Sparkup

ответ

-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

0

Я считаю, что JQuery должен быть инициализирован до MooTools как $ является псевдонимом и JQuery имеет возможность синхронизироваться это, вероятно, стоит попробовать, если это ISN «Трудно делать, учитывая ваши обстоятельства.

<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

Эта ссылка может дать вам лучший результат: http://stackoverflow.com/questions/2810399/jquery-and-mootools-conflict –

0

Какую версию MooTools вы используете? Mootools автоматически «сдаст» $.

У вас есть код для jQuery и mootools, написанных с использованием $?

Если так что вам нужно будет вручную найти Evey экземпляр знака доллара, по крайней мере, на одном из языков и заменить следующим

Для JQuery $() становится JQuery()

Для Mootools $() становится document.id() // FYI это предпочтительный шаблон кодирования в moo Core и больше, поскольку 1.3

Надеюсь, это поможет!

PS если вы закончите этот шаг не будет никаких конфликтов :)

Смежные вопросы