1

現在、メッセージ パッシングを使用してコンテンツ スクリプトから localStorage 内のデータのリクエストを送信していますが、問題はありません。コンテンツ スクリプトは期待どおりに動作しています。

これを別の方向にできますか?

「.apply()」というメソッドを持つコンテンツ スクリプトに存在するオブジェクトがあり、使用するオプションをクリックしたときに実行したいと考えています。

次のようなコンテンツスクリプトでリスナーを作成しようとしました:

var myLinker = new Linker();
chrome.extension.onRequest.addListener(function(request) {
    if (request.method == "apply")
{
        myLinker.apply("nothing");
        alert("applied");

}
    else
      ; //Do nothing

そして、次のようにリクエストを送信します。

chrome.extension.sendRequest({method: "apply"}, function(){
    alert("Tried to request");
});

ちょっとしたハックだと思いますが、私が考えることができるのはそれだけであり、機能しません=/

これを行う方法はありますか?

ポップアップからページに新しいコードを挿入するだけでよいと確信しています (そのための api 関数を見たと思います)。基本的にまったく同じコードが 2 回あるためです。

4

2 に答える 2

3

拡張機能からコンテンツ スクリプトにメッセージを送信するには、chrome.tabs.sendMessage代わりに を使用しchrome.extension.sendRequestます。

は Chrome 20でsendRequest置き換えられonMessageたため、公式ドキュメントはもうありませんsendRequest。のドキュメントはchrome.tabs.sendMessageこちらにあります。これらのイベントは混在できないことに注意してください。 または のいずれ*Request *Messageを使用してください。

于 2012-08-23T23:21:14.507 に答える
1

はい、これを使用します: http://developer.chrome.com/extensions/tabs.html#method-sendMessage

コンテンツ スクリプトは、ページの DOM 内に存在します。また、Chrome 内で開いている各ページには、それに関連付けられたタブ ID があります -- http://developer.chrome.com/extensions/tabs.html#type-tabs.Tab

新しいタブで開いたばかりのページに {method: "apply"} を送信するとします。

chrome.tabs.onCreated.addListener(function(tab) {
    chrome.tabs.sendMessage(tab.id, { method: "apply" });
});

メッセージを送信したい特定のタブを取得する他のイベント/メソッドがあります。現在選択されているタブに送信する getCurrent と呼ばれるものがあると思います。そのドキュメントを確認してください。

于 2012-08-23T23:58:12.830 に答える