我尝试测试WebRequest
APIs的示例,但抛出错误:
“onBeforeRequest”只能用于扩展进程。 的manifest.json:
{
"name": "example",
"version": "1.0",
"permissions": [
"experimental",
"http://*/*", "https://*/*"
],
"content_scripts": [ {
"js": [ "foo.js" ],
"matches": [ "http://*/*", "https://*/*" ],
"run_at": "document_start"
} ]
}
foo.js
正是示例1
答案 0 :(得分:10)
Chrome扩展程序功能(包括webRequest API)无法在内容脚本中使用(在您的示例中为foo.js
)。如果您希望从内容脚本中使用webRequest,则可以使用messaging功能与扩展程序background page进行通信。后台页面可以直接使用webRequest,并将响应(如果有)中继回内容脚本。
答案 1 :(得分:1)
您需要在清单文件中添加后台页面以及清单中的相应权限,以便后台页面可以访问webRequest API。请参阅此示例:This
正如Mihai所说,如果您需要让内容脚本执行操作,请查看此页面:chrome.webRequest not working?
将此添加到您的内容脚本中(您可以将问候语更改为操作,并向后台脚本应执行的操作进行调用):
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
将此添加到您的后台页面(您可以执行if语句并根据消息执行不同的操作):
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});