我正在撰写扩展程序并在我的后台页面中进行此调用:
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。
答案 0 :(得分:2)
使用以下代码对我有用,为什么要在特定的后台页面中执行此操作?
屏幕截图
<强>的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 :(得分:1)
在撰写我的第一个Chrome扩展程序时,我遇到了类似的问题: 我的解决方案是删除扩展程序,修复 manifest.json 并再次添加扩展程序。只是停用它并重新激活它将无法解决问题。
我将扩展程序加载到Chrome中并开始调试。当我在代码中发现错误时,停用扩展程序,再次修复已激活扩展程序的错误。这很好地修复了代码错误。但是当我尝试以阻塞方式使用webrequest模块时,我总是在webRequestInternal.addEventListener中遇到“错误:您没有使用阻止webRequest侦听器的权限。请确保在清单中声明webRequestBlocking权限。” EM>”。无论我怎么改变了manifest.json。