Я не уверен, что это ошибка или неправильная конфигурация моего файла манифеста, но разрешение <all_urls>
не работает с инъекцией скрипта содержимого. Вот простой пример, который вызывает ошибкуХром, отрицающий <all_urls> Разрешение на использование сценария содержимого
manifest.json:
{
"manifest_version": 2,
"name": "Bug?",
"version": "1",
"description": "This seems to be a bug",
"minimum_chrome_version": "50",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"<all_urls>",
"tabs",
"webNavigation"
]
}
background.js:
chrome.webNavigation.onBeforeNavigate.addListener(info => {
chrome.tabs.executeScript(info.tabId, {
frameId: info.frameId,
code: 'console.log("works")',
runAt: 'document_start'
},() => {
if(chrome.runtime.lastError)
console.error(chrome.runtime.lastError.message)
})
})
Моя цель
Я хочу, чтобы мои сценарии контента работать до того, как html обрабатывается браузером на странице и все его подкадры. Я знаю, что я могу указать сценарии содержания в файле манифеста. Однако это не позволяет мне запускать другой скрипт контента для корней и подкадров. Таким образом, вышеприведенный код является хорошим примером того, как может выглядеть мой возможный код.
Что на самом деле происходит
Содержимое сценариев не удалось выполнить из-за ошибки, для каждого кадра:
Cannot access contents of url "<some url>". Extension manifest must request permission to access this host.
Что ... <all_urls>
не означает все URLs?
Что заставляет работать?
Если я меняю chrome.webNavigation.onBeforeNavigate
на chrome.webNavigation.onCommitted
, впрыск будет работать как ожидалось (за исключением about:blank
страниц, которые можно легко установить). Это не гарантирует, однако, что мой скрипт контента запускается до обработки любого html.
Любые мысли?
'' не означает _all_ URL, но все _supported_ URL. Можете ли вы привести пример URL-адреса, который терпит неудачу? –
Xan