3

を含む小さなChrome拡張機能を書いていcontent_scriptます。

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

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

私の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"
(クロームインスペクターコンソール)

何か案は?

編集: content_scriptsは特別です:

コンテンツスクリプトは、Webページのコンテキストで実行されるJavaScriptファイルです。標準のドキュメントオブジェクトモデル(DOM)を使用することで、ブラウザがアクセスするWebページの詳細を読み取ったり、変更したりできます。

4

1 に答える 1

6

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

あなたはできるし、すべきです。拡張変数スペースはサンドボックス化されているため、コンテンツスクリプトは親のページから変数にアクセスできません。その逆も同様です。

于 2011-08-04T17:01:07.517 に答える