2012-05-01 3 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 유형을 가져 오는데 이는 기원의 tab (tabId를 포함하여 필요한 모든 정보를 제공함)을 읽는 데 사용할 수 있습니다.

관련 문제