У меня есть веб-расширение Firefox, портированное из расширения Chrome. Вызов executeScript завершается ошибкой на этом сайте.
https://addons.mozilla.org/en-US/firefox/
Я тестировал несколько страниц на этом сайте, и все они дают одну и ту же ошибку.
Минимальный код для воспроизведения этого
popup.js
document.addEventListener("DOMContentLoaded", function () {
chrome.tabs.query({"active": true}, function(tabs) {
chrome.tabs.executeScript(tabs[0].id, {"code": "console.log('Script executed in ' + document.location.href);"}, function(r) {
if(chrome.runtime.lastError) {
console.log(chrome.runtime.lastError);
document.body.innerHTML = 'Execute script Fail. check console';
} else {
document.body.innerHTML = 'Execute script Success';
}
});
});
});
manifest.json
{
"manifest_version": 2,
"name": "execscript_test",
"short_name": "execscript_test",
"version": "0.0.1",
"description": "desc",
"icons": {
"19": "images/icon19.png",
"38": "images/icon38.png",
"128": "images/icon.png"
},
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "48.0"
}
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"tabs",
"<all_urls>"
],
"browser_action": {
"browser_style": false,
"default_icon": "images/icon.png",
"default_title": "execscript_test",
"default_popup": "popup.html"
}
}
background.js — файл присутствует, но он пуст
всплывающее окно.html
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
На https://addons.mozilla.org/en-US/firefox/addon/engrip-tracker/?src=search
странице я нажал кнопку браузера и получил эту ошибку в консоли браузера
Error: No window matching {"matchesHost":["<all_urls>"]}
Stack trace:
Async*@moz-extension://062a83b0-81f1-42f0-84a8-89ecdc2c08e0/popup.js:8:4
Async*@moz-extension://062a83b0-81f1-42f0-84a8-89ecdc2c08e0/popup.js:2:2
EventListener.handleEvent*@moz-extension://062a83b0-81f1-42f0-84a8-89ecdc2c08e0/popup.js:1:1
Я думал, что это может быть какая-то проблема со схемой URL, но это происходит даже на https://addons.mozilla.org/en-US/firefox/
Тот же код работает без ошибок на chrome.
У меня ФФ v50. Я также тестировал это на FF каждую ночь (v53.0a1), и ошибка сохраняется.
Это что-то конкретное для этого сайта? Или я что-то здесь упускаю?
actionButton
без использования всплывающего окна. В этом случае проблема все еще существует (т. Е. Это не проблема, связанная с тем, что это делается во всплывающем окне.) - person Makyen♦   schedule 25.11.2016chrome.tabs.query
потребуется как минимум одно дополнительное свойствоqueryInfo
. Если что-то не ограничивает это одним окном, вы получите несколько записей в массивеtabs
, если у вас открыто более одного окна. Обычно это будетcurrentWindow: true
, но может быть и другим или более сложным, в зависимости от того, что вы хотите. Так или иначе, вы предполагаете, что нужная вам вкладка является первой в массиве результатов. В настоящее время это не гарантируется на основе предоставленных вами параметров. - person Makyen♦   schedule 25.11.2016https://chrome.google.com/webstore
. - person Makyen♦   schedule 25.11.2016