Chrome拡張機能から移植されたFirefox拡張機能があります。このサイトではexecuteScript呼び出しが失敗します。firefox addon特定のページでtabs.executeScriptエラーが発生しました{"matchesHost":["<all_urls>"]}
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';
}
});
});
});
マニフェスト.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 - ファイルが存在しているが、それは空である
popup.html私は、ブラウザのボタンをクリックし、ブラウザでこのエラーを得たhttps://addons.mozilla.org/en-US/firefox/addon/engrip-tracker/?src=search
ページで
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
コンソール
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/
同じコードはクロムにエラーなしで動作します。
私はFF v50を使用しています。私はFF夜間(v53.0a1)でこれをテストしたが、エラーが続く。
このサイト固有のものですか?または私はここに何かを逃していますか?
私はあなたのコードを試して、FF52.0a2(Developer Edition)でも問題が発生しています。また、ポップアップを使わずに 'actionButton'として試してみました。その場合でも問題は残っています(つまり、これがポップアップで行われているという事実に関連する問題ではありません)。 – Makyen
ところで、あなたの 'chrome.tabs.query'には少なくとも1つの追加の' queryInfo'プロパティが必要です。これを1つのウィンドウに制限するものがなければ、複数のウィンドウが開いている場合は、 'tabs'配列に複数のエントリを取得します。これは通常は 'currentWindow:true'ですが、あなたが望むものに応じて違うかもしれないし、もっと複雑かもしれません。いずれにしても、あなたが望むタブは結果の配列の最初のタブであると仮定しています。現在のところ、提供されたパラメータに基づいて保証されるものではありません。 – Makyen
私はまだソースコードでこれを追跡していませんが、実際に行われたことは、GoogleがChromeウェブストアにスクリプトを注入することを許可していないことに直接匹敵します。 Chromeは「拡張機能ギャラリーをスクリプト化できません」と応答します。このコードがChromeで 'https:// chrome.google.com/webstore'で使用されているときに発生します。 – Makyen