2011-12-22 26 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

"実行されません"とはどういう意味ですか?エラーはありますか?そしてなぜ 'if'の中で' window.jQuery'を '$'に割り当てるのですか? –

+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(); 
} 
関連する問題