2011-08-04 6 views
1

小さなChrome拡張機能を作成しています(content_script)。Chrome content_script:jQueryを待つ方法

これは単一のドメインで実行されますが、私はサイトを少し改善しようとしています。

コンテンツスクリプトでjQueryを使用しますが、サイトでもjQueryが使用されているため、拡張機能のcontent_script配列にjQueryを追加することはできません。

マイcontent_scriptます

"run_at": "document_end" 

しかしjQueryはまだロードされていないです。それはdocument_idleにもロードされていません。

だから私はそれを待たなければならない。

どうすればよいですか?

私はこれやってみました:

(function() { 
    var i = setInterval(function() { 
     console.log(typeof jQuery + " " + i); 
     if (typeof jQuery != "undefined") { 
      console.log("jQuery loaded"); 
      clearInterval(i); 
     } else { 
      console.log("jQuery not loaded"); 
     } 
    }, 200); 
})(); 

をしかし、何らかの理由typeof jQueryのために、常にそのループ内で定義されていません。

手動でclearIntervalを入力し、typeof jQueryをチェックすると、正しく"function"が得られます。
(クロムインスペクタコンソール)

アイデア?

EDIT: content_script Sは特別です:

コンテンツのスクリプトは、ウェブ ページのコンテキストで実行するJavaScriptファイルです。標準のDOM(Document Object Model)を使用することにより、 ブラウザにアクセスするウェブページの詳細を読むか、 に変更することができます。

答えて

4

私は単に私の拡張機能のcontent_script配列にはjQueryを追加することはできません。

あなたもそうすることができます。拡張変数空間はサンドボックス化されているため、コンテンツスクリプトは親ページの変数にアクセスすることはできず、その逆もありません。

+0

私は 'content_script'を使用しています:コンテンツスクリプトは、ウェブページのコンテキストで動作するJavaScriptファイルです。標準のDOM(Document Object Model)を使用することにより、ブラウザが訪れたWebページの詳細を読んだり、変更を加えることができます。 – Prody

+0

@Prody DOMにアクセスできますが、変数や関数にアクセスすることはできません。 http://code.google.com/chrome/extensions/dev/content_scripts.html#execution-environment – serg

+0

をご覧ください。ありがとうございます! – Prody

関連する問題