chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.update(null, {url: 'https://example.com/'});
});
上面的代码工作,当我的地址栏有东西时触发,意味着我在任何网页,但当我触发时我的地址栏是空白的,我得到以下错误:
Unchecked runtime.lastError while running tabs.executeScript: Cannot access a chrome:// URL
at Object.callback
答案 0 :(得分:2)
通常情况下(另请参阅文档中的Programmatic Injection),由于the allowed schemes为chrome://
,因此无法将脚本注入包含<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
网址的标签页。
在v61之前的Chrome中,仍然可以在新标签页的内容框架中注入&#34;空白地址栏&#34;你提到的内容表示为chrome://newtab/
。例如,主框架具有如下地址:https://www.google.com/_/chrome/newtab?espv=2&es_th=1&ie=UTF-8(使用devtools中的网络面板来检查网址)。因此,manifest.json
会有"permissions": ["tabs", "https://www.google.com/_/chrome/newtab*"],
或者您可以启用chrome://flags/#extensions-on-chrome-urls
标记,但这并不重要,因为Chrome会在每次启动时显示警告。