我正在將我的擴展從SDK遷移到WebExtensions,並且我無法找到背景腳本和側邊欄之間的通信方式。這個想法是在用戶點擊一個上下文菜單時傳遞用戶突出顯示的文本和一些額外的信息。我需要這個選擇在「選定文本」輸入複製,但我不能操縱從腳本工具條的DOM ...:(如何在Firefox WebExtensions中將背景與側欄腳本進行通信? (反之亦然)
browser.contextMenus.create({
id: "save-highlighted-data",
title: browser.i18n.getMessage("save-data"),
contexts: ["all"],
onclick: function(info,tab){
//I got the highlighted data
console.log("Selected text: " + info.selectionText);
browser.sidebarAction.setPanel({
panel: browser.extension.getURL("/sidebar/annotation.html")
}).then(function(){
//In this context, "this" = the chrome window. But I can not change the document
// of the sidebar
//console.log("window", this.document.querySelector("#selected-text"));
});
},
command: "_execute_sidebar_action" //This toggles the sidebar
});
任何想法,我檢查在側邊欄的例子GitHub庫,但他們只是打開一個側邊欄與側邊欄切換行動("_execute_sidebar_action"
)
您是否嘗試過'runtime.sendMessage()'和'runtime.onMessage.addListener()'? 您還可以從側邊欄訪問DOM,但涉及使用'tabs.query()'來查找活動選項卡,因爲邊欄沒有附加到特定選項卡。 – erosman
@erosman謝謝,這就是答案。它適用於運行時。你願意把它作爲答案嗎? PS:最後一個問題>如果側邊欄沒有標籤,如何使用tabs.query()?謝謝! – gal007