2012-11-20 71 views
1

我寫的擴展,在我的背景頁有這樣的呼叫權限:Chrome擴展:您不必使用阻塞的WebRequest聽衆

chrome.webRequest.onBeforeRequest.addListener(function(details) {console.log(details)}, {urls: ["<all_urls>"]}, ["blocking"]); 

但是每當我運行它,我在開發者工具得到這個錯誤爲背景頁:

Error during webRequestInternal.addEventListener: You do not have permission to use blocking webRequest listeners. Be sure to declare the webRequestBlocking permission in your manifest. 

即使我在我的清單看權限,像這樣:

"permissions": [ 
     "cookies", 
     "http://*/*", 
     "https://*/*", 
     "tabs", 
     "history", 
     "webRequest", 
     "webRequestBlocking" 
    ] 

這裏到底發生了什麼?以下是網絡請求文檔http://developer.chrome.com/stable/extensions/webRequest.html

回答

2

以下代碼適合我,爲什麼你想在特定的背景頁面中做到這一點?

屏幕截圖

enter image description here

manifest.json的

{ 
"name":"My First App", 
"description":"This is First App", 
"version":"1", 
"manifest_version":2, 
"permissions": [ 
     "cookies", 
     "http://*/*", 
     "https://*/*", 
     "tabs", 
     "history", 
     "webRequest", 
     "webRequestBlocking" 
    ], 
"icons":{"16":"icon.jpg"}, 
"background":{ 
    "scripts": ["background.js"] 
}, 
"browser_action":{ 
    "default_popup":"popup.html", 
    "default_icon":"icon.jpg" 
} 
} 

popup.html

<html> 
<head> 
<script src="popup.js"></script> 
</head> 
<body> 
</body> 
</html> 

popup.js

chrome.webRequest.onBeforeRequest.addListener(function(details) { 
console.log(details); 
}, {urls: ["<all_urls>"]}, ["blocking"]); 

Background.js

function doNothing(){ 
} 
1

我有,當我在寫我的第一個Chrome擴展了類似的問題: 我的解決辦法是刪除擴展 ,修復manifest.json再次添加擴展。只要停用它並重新激活它將無法實現。

我將擴展程序加載到Chrome並開始調試。當我在代碼中發現錯誤時,我取消激活的擴展名,修復了一個錯誤激活了的擴展。這很好地解決了代碼錯誤。但是,當我嘗試以阻塞的方式使用webrequest模塊時,我總是在webRequestInternal.addEventListener中出現「錯誤:您無權使用阻止的webRequest偵聽器。請務必在清單中聲明webRequestBlocking權限」。無論我如何更改manifest.json。