私はFirefoxの新しいwebExtensionsフレームワークを使用してWebExtensionを作成しています。これはChromeに基づいています。すべてのサンプル拡張はNightlyビルドで動作しますので、ここでテストします。私がやろうとしているのは、コンテンツページが読み込まれたときにスクリプトを実行することです。Firefoxでメインフレームでスクリプトを実行できないのはなぜですか?
background.jsこれは夜間に働く
"use strict";
function onCompletedFunc(details) {
var script = 'console.log("ok");';
console.log("Details are %o", details);
chrome.tabs.executeScript(details['tabId'], {
code: script,
runAt: 'document_end'
});
};
chrome.webRequest.onCompleted.addListener(onCompletedFunc,
{'urls': ['<all_urls>']},
['responseHeaders']);
//Does not work:
/*
chrome.webRequest.onCompleted.addListener(onCompletedFunc,
{'urls': ['<all_urls>'], 'types':["main_frame"]},
['responseHeaders']);
*/
:ここに私のbackground.jsページです。バックグラウンドページからの詳細(「詳細は...」)と、コンテンツページのコンソール上のいくつかの「ok」行が、ロードされたリソースごとに1つずつ表示されます。 Chromeでも同じように動作します(マニフェストファイルは少し異なります)。
第2のバリエーションは、ページ上で1回のみ実行されます。これはChromeで正常に動作します。夜間には、メインフレームから「詳細」メッセージが1つ表示されますが、コンテンツページのコンソールには何も表示されません。
これはタイミングの問題だと確信していますが、ここで何が問題なのですか?
manifest.jsonを( "アプリケーション" を削除:{...}クロームで使用するために)あなたがいないだから(types
なし)
{
"description": "",
"manifest_version": 2,
"name": "execute_script",
"version": "1.0",
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "45.0"
}
},
"permissions": [
"webRequest", "webRequestBlocking", "<all_urls>"
],
"background": {
"scripts": ["background.js"]
}
}
まだサポートされていない可能性があります。 Firefox WebExtensionsフォーラムにお問い合わせください。 – wOxxOm
@wOxxOmバグのようですが、私はhttps://bugzilla.mozilla.org/show_bug.cgi?id=1290016 –