我无法在新标签页上运行我的内容脚本(它没有分配给任何网址)。
我查看了有关该主题的各种帖子,即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
我有:
select p.name, p.price, AVG(r.rate)
from shops s, products p, rates r
Where s.is_locked <> 1 and
s.id = p.shop_id and
s.id = r.shop_id and
p.shop_id = r.shop_id
group by p.id
order by AVG(r.rate)
(也尝试"permissions": [
"http://*/*",
"https://*/*",
"chrome://*/*"
],
)
仍然没有运气......我错过了什么?
这个回答Can you access chrome:// pages from an extension? mentsions“不接受通配符”。这是真的 ?如果是,如何指定newtab页面?
THX!
答案 0 :(得分:7)
默认新标签页(NTP)上的Chrome 61和更新explicitly forbid内容脚本。
引用rdevlin,Chrome扩展API的开发者之一:
这种变化有几个原因。一个是执行政策, 另一个是为了保持一致。
我们现在有一段时间public policy表示修改了。{} 通过Chrome URL overrides以外的任何其他方式的NTP是不允许的(尽管如此) 在很多情况下,直到7月1日我们才开始执行这项政策。这是 仅仅使用相同的策略更加内嵌铬代码以帮助防止 如果扩展程序正在修改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),注射已经存在 在渲染器和浏览器中都不允许使用。而且,如果我们回到waaaaay, NTP曾经是纯WebUI,其URL为chrome:// newtab,其中有注入 再次被禁止。而不是具有不一致的行为取决于 扩展使用的脚本注入类型,我们希望具有一致性 整个系统。
我将会看到我是否无法在chrome-extensions @中发布公告 公告(即使该政策已经发布了一段时间,现在还有一点 额外的曝光不会伤害。