2012-05-01 35 views
3

background.js时:“错误:参数1所要求” 试图设置一个监听上onBeforeRequest

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. 

我该如何解决?

+0

'request.func'未定义? – Pacerier

回答

1

关于消息传递,请求是JSON序列化的。
函数不可序列化,所以它们不会被发送。

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

被接收作为

{ 
    filter: requestFilter 
} 

移动功能逻辑,以背景页。
如果要从内容脚本添加webRequest事件侦听器,请使用chrome.extension.sendRequest将所有必需的(JSON序列化)数据传递到后台页面。接收者(背景)也获得MessageSender类型,该类型可用于读取源(其提供所有必要信息,包括tabId)的tab

相关问题