Я столкнулся с проблемой.Через передачу сообщений я перенес данные 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>
я получаю selected_Text в background.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>
Теперь, чтобы получить доступ к значению этого текста на странице параметров options.html, я попробовал2 метода Один из них - использовать chrome.extension.getBackgroundPage () следующим образом:
<script>
function init(){
var bkg = chrome.extension.getBackgroundPage();
alert("the selected text is "+bkg.Addr_details.place);
}
</script>
init - это загрузка options.html. Это не дает мне значения.На самом деле, он просто завершается при инициализации chrome.extension.backgroundPage.
Еще один подход, который я пробовал, заключался в создании аналогичного запроса (подобного тому, который уже присутствует в contentscript.js) из contentscript.js с другим приветствием и добавлениемслушатель его в файле options.html. Похоже, что он не работает ни на стороне получателя (страница параметров), потому что после запроса я получаю обратный вызов в contentScript. Я действительно что-то делаю не так, не так ли? Пожалуйста, помогите.