2011-12-22 2 views
0

Я создаю букмарклет, который отлично работает на некоторых сайтах, но совсем не на других. Когда он терпит неудачу, сценарий все еще добавляется к нижней части ... но только часть пробелов javascript.JS Bookmarklet - сценарий не запускается на некоторых сайтах

Я предполагаю, что есть конфликты javascript ... мысли? Я заметил, что работаю меньше всего на сайтах, которые уже имеют jQuery.

Код приведен ниже. Благодаря!

if (!($ = window.jQuery)) { 
    alert('no jquery! its being added'); 
    script = document.createElement('script'); 
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; 
    script.onload=runEverything; 
    document.body.appendChild(script); 
} else { 
    alert('jquery exists!'); 
    runEverything(); 
} 
+1

Что означает «не работает»? Любые ошибки? И почему вы присваиваете 'window.jQuery'' '' внутри вашего 'if'? –

+0

Это означает, что 'runEverything()' не будет запускаться. 'If' обнаруживает, что' '' уже назначен чему-то (jQuery, Prototype и т. Д.). –

+0

Он не обнаруживает, он присваивает 'window.jQuery'' $ '. Вы должны использовать '==' для проверки, а не '='. –

ответ

2

Это должно сработать.

if (!($ == window.jQuery)) { 
    alert('no jquery! its being added'); 
    script = document.createElement('script'); 
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; 
    script.onload=runEverything; 
    document.body.appendChild(script); 
} else { 
    alert('jquery exists!'); 
    runEverything(); 
} 

Хотя я рекомендую это;

if (typeof jQuery == 'undefined') { 
    alert('no jquery! its being added'); 
    script = document.createElement('script'); 
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; 
    script.onload=runEverything; 
    document.body.appendChild(script); 
} else { 
    alert('jquery exists!'); 
    runEverything(); 
} 
Смежные вопросы