В фоновом скрипте browser.tabs.create открывает страницу, но отображает сообщение об ошибке: Нет соответствия окна {"matchHost": ["<all_urls>"]}
Мой пример использования довольно прост:
- Нажмите значок браузера на панели инструментов
- Слушайте щелчок в фоновом скрипте
- Создайте новую вкладку со страницей в том же каталоге, что и
manifest.json
На указанной странице есть файл JavaScript, связанный с
<script>
элемент.Ниже приведена структура приложения и кода
manifest.json
{
"description": "app",
"manifest_version": 2,
"name": "demo",
"version": "1.0",
"permissions" : [
"activeTab", "tabs", "<all_urls>","host"
],
"background" :{
"scripts" : ["bg/background.js"]
},
"browser_action": {
"default_icon": {
"16": "icons/page-16.png",
"32": "icons/page-32.png"
}
}
}
background.js
console.log("Message from backgroundjs.");
browser.browserAction.onClicked.addListener((id)=>{
browser.tabs.create({
url: browser.runtime.getURL("../tab/html/app.html")
});
});
app.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>bookmarks</title>
<!--<link rel="stylesheet" href="css/main.css"> -->
</head>
<body>
<p>before script</p>
<script src="../js/tabApp.js"></script>
<p> after script </p>
</body>
</html>
tabApp.js
//a simple console message
console.log("hello from the other end");
Выход
- Message from backgroundjs. background.js:8:2
- hello from the other end tabApp.js:3:1
- Error: No window matching {"matchesHost":["<all_urls>"]} (unknown)
Выход ожидается кроме
Error: No window matching {"matchesHost":["<all_urls>"]}
, Я не уверен, что вызывает эту ошибку.
Я сделал следующие вещи для отладки до сих пор
- добавил разрешение
Пожалуйста, дайте ваши входы
1 ответ
Можете ли вы проверить, что на выходе
console.log(browser.runtime.getURL("../tab/html/app.html")
Похоже, относительный путь не из файла manifest.json ( https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getURL)