"Error: parameter 1 required" when trying to set the onBeforeRequest listener

background.js:

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

content script:

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

The line chrome.webRequest.onBeforeRequest.addListener(request.func, request.filter, ["blocking"]);causes the following error:

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

How can i fix this?

+3
source share
1 answer

When sending messages, requests are JSON-serialized.
Functions are not serializable, so they are not sent.

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

accepted as

{
    filter: requestFilter
}

.
webRequest script, (JSON-) chrome.extension.sendRequest. () MessageSender, tab ( , tabId).

+1

All Articles