javascript - 如何使用 Chrome 扩展程序阻止某些网站?

标签 javascript google-chrome google-chrome-extension blocking

我正在为一个项目制作一个简单的 chrome 扩展。我正在制作一个扩展程序来阻止某些 URL(社交媒体等),以使学习更加高效。我不太擅长JS,但我想学习。我有一些想法,也许它可以阻止网站,或者只是在 div 中绘制一些内容来阻止其内容。另外,也许我可以在 popup.html 中输入一个 URL 来指定被阻止的网站。在 firebase 中保存数据。另外,我读到也许使用 declarativeWebRequest 更容易,但不太确定如何使用它。

Manifest.js

"name": "StudyBuddy",
"description": "Helps you study by blocking distracting websites",
"version": "2.0",
 "permissions": [
   "webRequestBlocking",
   "webRequest",
   "activeTab",
   "tabs",
   "http://*/*",
   "https://*/*"
],
 "content_scripts" : [{
    "matches": ["<all_urls>"],
    "js" : ["background.js"],
    "css" : ["styles.css"]



  }],
 "browser_action": {
   "default_title": "Blocks websites",
   "default_popup": "popup.html"

  },
  "manifest_version": 2

背景.js

console.log("Loaded extension");


function blockRequest(details) {
   return {cancel: true};
}

function updateFilters(urls) {
   if(chrome.webRequest.onBeforeRequest.hasListener(blockRequest))
     chrome.webRequest.onBeforeRequest.removeListener(blockRequest);
   chrome.webRequest.onBeforeRequest.addListener(blockRequest, {urls: ["*://*.facebook.com/*", "*://*.facebook.net/*"]}, ['blocking']);

}

目前我的扩展程序不会阻止任何内容。

最佳答案

好的,您的代码有两个问题:

  • 您的 list .json 未指定 background.js,因此该代码未运行。
  • 您实际上并没有从任何地方调用 updateFilters 函数。

我纠正了这两个问题,这个扩展对我来说效果很好,它按预期阻止了 Facebook。

总的来说,我建议您多阅读 documentation当您尝试开始时进行扩展,尤其是 background pages 上的部分和 event pages .

manifest.json:(请注意,我无权访问您的弹出 html/css,因此我必须从 list 中删除该部分)。

{
  "name": "StudyBuddy",
  "description": "Helps you study by blocking distracting websites",
  "version": "2.0",
  "permissions": [
     "webRequestBlocking",
     "webRequest",
     "activeTab",
     "tabs",
     "http://*/*",
     "https://*/*"
  ],
  "background" : {
    "scripts":  [
      "background.js"
    ]
  },
  "manifest_version": 2
}

背景.js

console.log("Loaded extension");


function blockRequest(details) {
   return {cancel: true};
}

function updateFilters(urls) {
   if(chrome.webRequest.onBeforeRequest.hasListener(blockRequest))
     chrome.webRequest.onBeforeRequest.removeListener(blockRequest);
   chrome.webRequest.onBeforeRequest.addListener(blockRequest, {urls: ["*://*.facebook.com/*", "*://*.facebook.net/*"]}, ['blocking']);
}

updateFilters();

关于javascript - 如何使用 Chrome 扩展程序阻止某些网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43889727/

相关文章:

javascript - Node.js Express 应用程序无法从 dropzone.js 回调重定向

javascript - 使用 JavaScript 将当前 URL 发送到电子邮件

javascript - 更改扩展最上面的上下文菜单标题

google-chrome - 在powershell中实例化chrome对象

javascript - 如何使用谷歌浏览器扩展搜索亚马逊?

Javascript 复选框所需功能仅适用于 1 个表单

javascript - dropbox.js 验证 Firefox 操作系统

ajax - 在 Safari 扩展中编写与 Chrome 的 onBeforeRequest 等效的代码

google-chrome - 如何托管 Chrome 扩展程序?

javascript - Rails 动态渲染部分内容