2

我正在编写一个扩展程序,并在我的后台页面中有这个调用:

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

4

2 回答 2

2

使用以下代码对我很有用,为什么要在特定的背景页面中执行此操作?

截屏

在此处输入图像描述

清单.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"]);

背景.js

function doNothing(){
}
于 2012-11-21T06:01:59.973 回答
1

我在编写我的第一个 Chrome 扩展程序时遇到了类似的问题:我的解决方案是删除扩展程序,修复manifest.json再次添加扩展程序。只是停用它并重新激活它不会起作用。

我将扩展加载到 Chrome 并开始调试。当我在代码中发现错误时,我停用了扩展程序,修复了错误并再次激活了扩展程序。这可以很好地修复代码错误。但是当我尝试以阻塞方式使用 webrequest 模块时,我总是得到“在 webRequestInternal.addEventListener 期间出错:您无权使用阻塞 webRequest 侦听器。请务必在清单中声明 webRequestBlocking 权限。 ”。无论我如何更改 manifest.json。

于 2013-02-28T11:44:19.490 回答