Javascript 阻止webRequest的Chrome扩展似乎根本不起作用
我只是想让工作顺利进行。这是manifest.jsonJavascript 阻止webRequest的Chrome扩展似乎根本不起作用,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我只是想让工作顺利进行。这是manifest.json { "description": "Altering HTTP responses", "manifest_version": 2, "name": "http-response-filter", "version": "1.0", "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/http-response",
{
"description": "Altering HTTP responses",
"manifest_version": 2,
"name": "http-response-filter",
"version": "1.0",
"homepage_url":
"https://github.com/mdn/webextensions-examples/tree/master/http-response",
"icons": {
"48": "SA-48x48.png"
},
"background": {
"scripts": ["background.js"]
}
}
下面是background.js
function listener(details) {
console.log("******listen");
let filter = browser.webRequest.filterResponseData(details.requestId);
let decoder = new TextDecoder("utf-8");
let encoder = new TextEncoder();
filter.ondata = event => {
let str = decoder.decode(event.data, { stream: true });
// Just change any instance of Example in the HTTP response
// to WebExtension Example.
str = str.replace(/Example/g, "WebExtension Example");
filter.write(encoder.encode(str));
filter.disconnect();
};
return {};
}
console.log("******");
browser.webRequest.onBeforeRequest.addListener(
listener,
{ urls: ["https://example.com/*"], types: ["main_frame"] },
["blocking"]
);
所以我希望它会
- 当我加载
example.com
- 将MDN声明的“示例”修改为“WebExtension示例”
是否可能有什么东西阻止了此后台脚本的运行?我只是没有以正确的方式配置它吗?请为我指出正确的方向,非常感谢。您的Chrome扩展需要“询问”使用webRequest API的权限,以便该扩展的用户将得到该扩展可能能够执行的操作的通知 尝试将其添加到您的
manifest.json
:
"permissions": [
"webRequest",
"webRequestBlocking"
]
Chrome不支持修改响应主体,因此无法正常工作。我不认为这是真的,我是直接从MDN获得的,我还见过其他使用此API的扩展(如SmileAlways)。我认为这里有一个设置,我没有弄对?我删除了我的帖子,因为它实际上不是对你问题的回答-评论更适合于建议。如果加载了脚本,console.log应该向控制台打印一些内容-因此可能有一些内容阻止加载脚本。顺便问一下-调试时是否检查扩展的背景页?@swyx,您显然没有检查SmileAlways的代码。它不使用browser.webRequest.filterResponseData。它是铬合金的,你也可以在屏幕上看到。另外,
浏览器
名称空间是特定于Firefox的,它在Chrome中也不存在,所以你们需要一个polyfill。嘿,伙计们,所以我在50分钟前再次开始这方面的工作,现在我已经解决了所有问题。所以,是的,你是对的,它是chrome
而不是browser
。我也不知道它打印到后台页面的控制台而不是主控制台页面。最后终于明白了,非常感谢!我不知道你为什么被否决。。将您标记为与背景页检查提示一样正确是正确的做法,这正是我调试其他所有内容所需要的。非常感谢你。