私は問題に直面しています。メッセージを渡すことで、コンテンツスクリプトからバックグラウンドページにDOMデータを転送しました。私が知りたいのは、オプションページとバックグラウンドページの間にコミュニケーションチャネルを確立する方法です。 API chrome.extension.getBackgroundPage()
は役に立ちません。また、伝統的なメッセージはsendRequest
とaddlistener
を通ることもありません。このデータをバックグラウンドページからオプションページにどのように転送するのですか?誰かが説明するテスト済みのスニペットを提供できますか?オプションページとクロム拡張の背景ページの通信方法
これは私が試したことです。私contentscript.jsで
<script>
var selected_Text ="";
window.addEventListener("dblclick",function(event){
selected_Text = String(window.getSelection());
chrome.extension.sendRequest({greeting: "maprender",name:selected_Text}, function(response) {
alert("reached here")
console.log(response.farewell);
});
//i am to then load options.html on DOM like this
var Div = document.createElement("iframe");
Div.setAttribute('src', chrome.extension.getURL('options.html'));
Div.setAttribute("style","width:130px;height:80px;position:absolute;left:10px;");
Div.setAttribute("id","xyz");
document.body.appendChild(Div);
</script>
私は2つの方法を試してみましたオプションのページoptions.htmlでこのテキストの値にアクセスするために今、この
<script>
var Addr_details={
place:null
};
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "maprender")
{
alert("reached here sendin resp"+request.name);
Addr_details.place = request.name;
sendResponse({farewell: "goodbye"});
}
else
sendResponse({}); // snub them.
});
</script>
ようbackground.htmlでselected_Textを盗ん
<script>
function init(){
var bkg = chrome.extension.getBackgroundPage();
alert("the selected text is "+bkg.Addr_details.place);
}
</script>
initがoptions.html .Thisのonloadイベントである私にVを与えるものではありません:一つは、このようchrome.extension.getBackgroundPage()を使用することでしたアウエー。実際はchrome.extension.backgroundPageの初期化時に終了します。
私が試みたもう1つのアプローチは、異なる挨拶でcontentscript.jsから既にcontentcript.jsにあるものと同様の要求を作成し、options.htmlでリスナーを追加することでした。受信側(オプションページ)では、リクエスト後にcontentscriptでコールバックを取得するので、私は確かに何か間違っている、amnt私は?助けてください。
「API chrome.extension.getBackgroundPage()は役に立ちません」なぜですか? –