1

メッセージパッシングAPIを使用して、リッスンする同じページにリクエストを送信することは可能ですか? うまくいかないようです!

1 つの解決策は、他のページにリスナーをセットアップしてから、要求を親ページにリダイレクトすることです。しかし、それはハックであり、私は本当にそれをしたくありません:(

編集(更新)

背景.html (0)

chrome.extension.sendRequest({action:'foo'}, function(response) {
    //do stuff
});

インデックス.html (1)

chrome.extension.sendRequest({action:'foo'}, function(response) {
    //do stuff
});

background.html (2)

chrome.extension.onRequest.addListener(function(request,sender,sendResponse) {
    if(request.action=='foo') //do stuff
});
...
...
//the code form (0)

上記から (1) は機能しますが、(0) は機能しません:(

編集2

(2) から

chrome.extension.onRequest.addListener(function(request,sender,sendResponse) {
    switch(request.action) {
        case 'foo': //do some stuff here
        break;
    }
});

上記のスイッチはかなり長くなりました..おそらく30エントリ..さらに、イベントリスナーを突く以外にスイッチを呼び出す方法はありません。(または、何か不足していますか?)

のコードを同じファイルのその下のどこかで実行したいcase 'foo':ので、(0)で呼び出してみました。

4

1 に答える 1

3

すでにわかっているように、実際には同じページにリクエストを送信できないため、回避策として次のことを行います。

function requestHandler(request, sendResponse) {
    switch(request.action) {
        case 'foo':
            sendResponse(true);
            break;
        }
}

chrome.extension.onRequest.addListener(function(request,sender,sendResponse) {
    requestHandler(request, sendResponse);
});

//calling handler directly
requestHandler({action:"foo"}, function(result) {
    //response
});
于 2011-08-07T16:47:11.257 に答える