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:最後の1つの質問>サイドバーにタブがない場合、どのようにtabs.query()を使用できますか?ありがとう! – gal007