3

background.js :

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse)
    {
        console.log(request.filter)
        chrome.webRequest.onBeforeRequest.addListener(request.func, request.filter, ["blocking"]);
    }
);

コンテンツ スクリプト:

chrome.extension.sendRequest(
    {
        func: requestInterceptor,
        filter: requestFilter
    }
);

chrome.webRequest.onBeforeRequest.addListener(request.func, request.filter, ["blocking"]);は次のエラーを引き起こしています:

Error in event handler for 'undefined': Error: Parameter 1 is required.

どうすれば修正できますか?

4

1 に答える 1

1

メッセージ パッシングでは、リクエストは JSON でシリアル化されます。
関数はシリアル化できないため、送信されません。

chrome.extension.sendRequest( {
    func: requestInterceptor,    // Function
    filter: requestFilter        // Array of strings
});

として受け取られる

{
    filter: requestFilter
}

関数ロジックをバックグラウンド ページに移動します。
コンテンツ スクリプトからイベント リスナーを追加する場合はwebRequest、必要なすべての (JSON シリアル化可能な) データを を使用してバックグラウンド ページに渡しますchrome.extension.sendRequest。レシーバー (バックグラウンド) も型を取得します。これを使用して、オリジン (tabId を含む必要なすべての情報を提供します)MessageSenderを読み取ることができます。tab

于 2012-05-02T12:12:14.333 に答える