为什么我的 chrome 扩展程序在基于 chrome:// 的 URL 中不起作用 [重复]

Why doesn't my chrome extension work in chrome:// based URLs [duplicate]

提问人:Safwan Khan 提问时间:7/24/2023 最后编辑:Safwan Khan 更新时间:7/24/2023 访问量:119

问:

enter image description here

大家好,我正在构建一个 chrome 扩展程序,该扩展程序会根据用户的情绪生成报价。

我的 chrome 扩展涉及使用内容脚本,通过使用 DOM 和 JS 在屏幕上插入覆盖层来修改用户的活动浏览器窗口。上图显示了这一点。

但是,我注意到我的 chrome 扩展程序不适用于基于 chrome:// 的 URL(例如:chrome://extensions/ 和 chrome://newtab)。

它引发以下异常:

Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.

它适用于其他任何地方,并且不会引发此异常。

我看到在类似的 StackOverflow 帖子中,在 url chrome:// 中执行扩展后,chrome 扩展不起作用,并且通过在线的一些研究,Google Chrome 不允许运行其行为涉及修改 chrome 设置和功能的扩展。

这是否适用于我的扩展程序的情况?有没有办法解决这个问题?我已经在我的 chrome 扩展程序的 manifest.json 文件下面发帖了。理想情况下,我希望我的扩展至少能够在 chrome://newtab 上运行。我真的很感激对这个问题的见解。

manifest.json

{

  "manifest_version": 3,
  "name": "Quotr",
  "description": "A Quote Generator Chrome Extension",
  "version": "1.0",
  "permissions": [
    "tabs",
    "activeTab"
  ],
  "action": {
    "default_popup": "popup/popup.html",
    "default_icon": "icons/QuotrPicture.png"
  },
  "content_scripts": [
    {
      "matches": [
        "<all_urls>"
      ],
      "js": [
        "scripts/content-script.js",
        "quote-display/quote-display.js"
      ]
    }
  ]
}

javascript dom google-chrome-extension

评论

0赞 Mike 'Pomax' Kamermans 7/24/2023
因为 chrome:// 位置是 URI,而不是 URL。它们是浏览器内部的,而不是 Web 位置,因为你可以很容易地从它们的协议不是 http(s) 的事实中看出。

答:

1赞 b00t 7/24/2023 #1

包含的任何页面上都不允许使用内容脚本。https://codereview.chromium.org/2978953002/chrome://newtab

来自同一来源:

希望修改新标签页的扩展应通过 chrome url 的使用 会覆盖 [1] API

所以我想最接近的解决方法是创建一个自定义登录页面(那里有扩展可以做到这一点)并允许你的脚本在那里运行。newtab