我正在使用基於Chrome的Firefox的新webExtensions框架編寫webextension。所有示例擴展都在Nightly構建中工作,所以這就是我正在測試的地方。我想要做的是在加載時在內容頁面上運行腳本。這裏是我的background.js頁:爲什麼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']);
*/
這個工作在夜間。我在內容頁面的控制檯上獲取了背景頁面的詳細信息列表(「詳細信息是...」),以及幾行「ok」,其中每個資源都加載了它。它在Chrome中運行相同(清單文件略有不同)。
我想要的是第二種變體,它只在頁面上運行一次。這在Chrome中正常工作。在Nightly中,它會顯示主框架中的一條「詳細信息」消息,但內容頁面上的控制檯不顯示任何內容。
我確定這是一個計時問題,但是這裏有什麼問題?
manifest.json的(刪除 「應用程序」:{...}對於Chrome的使用)
{
"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 –