0

ではchrome.tabs.executeScript、挿入されたコンテンツ スクリプトで background.js の変数を使用するにはどうすればよいですか? 私は次のようなことを意味します:

(...)
var identificador = target.selectionText;
chrome.tabs.executeScript(null,
                       {code:"alert(identificador);"});
(...)

それは、私がしなければならないことについて考え出された単なる例です。私の拡張機能では、(コンテキスト メニューを使用して) テキストの一部が選択された変数を設定し、Web がリロードされたときにドキュメント内で検索し、一致が見つかった場合は警告することを目標としています。これを行う唯一の方法は、正規表現とを使用することですが、 JS と を挿入するdocument.body.innerText方法しか使用できないと思います。それで...それを行うより良い方法はありますか?そうでない場合、テキスト部分を含む変数を、によって実行されるコードに送信するにはどうすればよいですか?document.body.innerTextexecuteScriptexecuteScript

4

1 に答える 1

3

バックグラウンド ページ (background.js) から表示中の Web ページに情報を渡す最良の方法は、コンテンツ スクリプトメッセージ パッシングを組み合わせて使用​​することです。

コンテンツ スクリプトを使用すると、JS ファイルを Web ページに追加できます。これは、background.js からメッセージを受信し、Web ページ DOM でアクションを実行するために使用されます。

メッセージ パッシングは、JSON オブジェクトを渡すことによって、バックグラウンド ページと Web ページの間で通信するメカニズムを提供します。

コンテンツ スクリプトの追加例:

{
    "name": "My extension",
    "permissions": [
        "tabs"
    ],
    "content_scripts": [{
        "js": ["myscript.js"]
    }]
}

の内容例background.js:

// Get the current tab and send a message from it:
chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendMessage(tab.id, {
        identificador: target.selectionText
    });
});

の内容例myscript.js:

// Listen to the message
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    console.log(request.identificador);      
});

Google では現在、バックグラウンド ページの代わりにイベント ページを使用することを推奨しています。

于 2013-05-11T19:01:54.133 に答える