Mam problem. Poprzez przekazywanie wiadomości przeniosłem dane DOM z skryptu treści na stronę w tle. Chciałbym wiedzieć, w jaki sposób można ustanowić kanał komunikacji między stroną Opcje a stroną w tle. Interfejs API chrome.extension.getBackgroundPage()
nie jest przydatny. Nie działa również tradycyjny komunikat przechodzący przez sendRequest
i addlistener
. Jak przenieść te dane ze strony w tle na stronę opcji? Czy ktoś może udostępnić przetestowany fragment, aby to wyjaśnić?jak komunikować się między stroną opcji a stroną w tle rozszerzenia chrome
to jest to, czego próbowałem. W moich 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>
I retreive się selected_Text na background.html jak ten
<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>
teraz, aby uzyskać dostęp do wartości tego tekstu na stronie opcji options.html Próbowałem 2 sposoby jednym z nich było korzystać chrome.extension.getBackgroundPage() tak:
<script>
function init(){
var bkg = chrome.extension.getBackgroundPage();
alert("the selected text is "+bkg.Addr_details.place);
}
</script>
init jest onload options.html .To nie daje mi v Alue. infact po prostu kończy się przy inicjalizacji chrome.extension.backgroundPage.
Innym podejściem, które próbowałem, było stworzenie podobnego żądania (podobnego do tego już istniejącego w contentscript.js) z pliku contentscript.js z innym powitaniem i dodanie do niego obiektu nasłuchującego w options.html. To nie działa ani po stronie odbiorcy (strona opcji), ponieważ otrzymuję wywołanie zwrotne w spisie treści po żądaniu. Z pewnością robię coś nie tak, czy nie? Proszę o pomoc.
"Funkcja API chrome.extension.getBackgroundPage() nie jest przydatna" Dlaczego? –