3

背景.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要从内容脚本添加事件侦听器,请使用chrome.extension.sendRequest. 接收者(背景)也有一个MessageSender类型,可以用来读取tab来源(它提供所有必要的信息,包括 tabId)。

于 2012-05-02T12:12:14.333 回答