Chrome扩展程序阻止webRequest似乎无法正常运行

时间:2017-12-06 09:44:15

标签: javascript google-chrome google-chrome-extension

我只是想让MDN example 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",
  "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
  • 时输入一些console.logs
  • 修改"示例" to" WebExtension示例"正如MDN人员所述

然而,它对我来说根本不起作用(我使用的是Chrome,我将它作为解压缩的扩展程序添加到我的扩展程序中,之前我已经完成了其他Chrome扩展程序,但这是我第一次这样做背景脚本)。

是否有可能阻止此后台脚本运行?我没有以正确的方式配置它吗?请指出我正确的方向,非常感谢。

1 个答案:

答案 0 :(得分:2)

您的Chrome扩展程序需要“询问”使用webRequest API的权限,以便扩展程序的用户可以获得扩展程序可以执行的操作。

尝试将此添加到您的manifest.json

"permissions": [
    "webRequest",
    "webRequestBlocking"
]