4


ユーザーがアクセスする特定のページに機能を追加するChrome拡張機能を作成しています。
そのためには、ページで呼び出すことができる必要のあるいくつかの変数と関数を挿入する必要があります。
これらの変数/関数は、コンテンツスクリプトで生成されます。

ただし、コンテンツスクリプトは人里離れた環境で実行されるため、ホストページはそれにアクセスできません。

この記事によると: http ://code.google.com/chrome/extensions/content_scripts.html#host-page-communication イベントを追加することで、コンテンツスクリプトとホストページがDOMを介して通信することが可能です。
しかし、それは物事を行うための恐ろしい方法であり、メソッド/変数を簡単に注入する方法を本当に望んでいます。

そのような可能性はありますか?

ありがとう!

4

2 に答える 2

4

それでも誰かが興味を持っているのであれば、メッセージを介してコンテンツスクリプトとページ自体の間で通信するソリューションを見つけました。

送信スクリプトでは次のようになります。

window.postMessage({ type: "messageType", params: { param: "value", anotherParam: "value" } }, "*"/*required!*/);

次に、受信スクリプトで次のようにします。

window.addEventListener("message", function(event) {
        // We only accept messages from ourselves
        if (event.source != window)
            return;

        switch (event.data.type) {
        case "blabla":
            // do blabla
            // you can use event.data.params to access the parameters sent from page.
            break;
        case "another blabla":
            // do another blabla 
            break;
        }
    });
于 2012-08-21T08:46:33.623 に答える
0

これが私の拡張機能、http://pagexray.com/extension/でそれをコーディングした方法です

あなたのmanifest.jsonに

 "content_scripts": [
    {
        "matches": ["http://*/*"],
        "js": ["script.js"]
    }
],

script.jsで

(function(){
  var script = document.createElement('script');
  script.src = "http://example.com/external.js";
  script.addEventListener('load', function() { });
  document.head.appendChild(script);
})();
于 2012-07-05T16:37:52.557 に答える