【问题标题】:Modifying the built-in newtab page修改内置的新标签页
【发布时间】:2021-10-08 12:47:52
【问题描述】:

我无法在新标签页上运行我的内容脚本(它没有分配给任何 url)。

我查看了有关该主题的各种帖子,即Does content script have access to newtab page? 和What is the URL of the google chrome new tab page and how to exclude it from manifest.json

这似乎表明这是可能的。

我启用了 chrome://flags/#extensions-on-chrome-urls

我有:

"permissions": [
    "http://*/*", 
    "https://*/*",
    "chrome://*/*"
],

(也试过"*://*/_/chrome/newtab*")

仍然没有运气......我错过了什么?

这个答案Can you access chrome:// pages from an extension? 提到“不接受通配符”。这是真的 ?如果是的话如何指定新标签页?

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    问题是 Chrome 61 和更新的 explicitly forbids 通过内容脚本或任何其他 API 访问其内置的新标签页 (NTP) 的内容。

    解决方案是在您的扩展程序中将整个替换页面创建为 html 文件,并在 chrome_url_overrides 中指定。

    至于为什么,这里引用 [source] rdevlin,chrome 扩展 API 的开发者之一:

    这种变化有几个原因。一是执行政策, 另一个是为了一致性。

    • 我们已经有一段时间了 public policy 声明修改 不允许通过Chrome URL overrides 以外的任何方式使用 NTP(尽管 在许多情况下,我们直到 7 月 1 日才开始执行此政策)。这是 只是让 chrome 代码更符合相同的政策,以帮助防止 如果扩展正在修改 NTP 并因策略而被取消,则感到惊讶 违规行为。
    • 这也是为了保持一致性,因为我们实际上已经在 NTP 上处理了脚本 由于某些 NTP 魔法,多年来不同。例如,看到的 URL NTP 上的浏览​​器是 chrome://newtab,但渲染器中的 url 是 https://www.google.com/_/chrome/newtab。由于 chrome.tabs.executeScript 检查 浏览器中的 URL,脚本将被拒绝,即使内容脚本 (在渲染器中检查)将被允许。理论上,这些权限应该 不不同。同样奇怪的是,如果用户使用的是本地 ntp (chrome-search://local-ntp/local-ntp.html),注入已经是 在渲染器和浏览器中都不允许。而且,如果我们回去, NTP 曾经是纯 WebUI,其 URL 为 chrome://newtab,其中注入 再次被禁止。而不是有不一致的行为取决于 扩展使用的脚本注入类型,我们希望具有一致性 整个系统。

    附:请不要编辑引用的文字。

    【讨论】:

      猜你喜欢
      • 2018-07-05
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 2014-09-13
      相关资源
      最近更新 更多