Tôi gặp sự cố. Thông qua việc truyền thông điệp, tôi đã chuyển dữ liệu DOM từ tập lệnh nội dung sang trang nền. Những gì tôi muốn biết là làm thế nào bạn có thể thiết lập một kênh truyền thông giữa trang Tùy chọn và trang nền. API chrome.extension.getBackgroundPage()
không hữu ích. Thông điệp truyền thống cũng không phải là thông qua các hoạt động sendRequest
và addlistener
. Làm cách nào để chuyển dữ liệu này từ trang nền sang trang tùy chọn? Ai đó có thể cung cấp đoạn trích thử nghiệm để giải thích?cách liên lạc giữa trang tùy chọn và trang nền của tiện ích chrome
đây là những gì tôi đã thử. Trong contentscript.js tôi
<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>
tôi truy xuất các selected_Text tại background.html như thế này
<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>
Bây giờ để truy cập giá trị của văn bản này tại trang tùy chọn options.html tôi đã cố gắng 2 phương pháp Một là sử dụng chrome.extension.getBackgroundPage() như sau:
<script>
function init(){
var bkg = chrome.extension.getBackgroundPage();
alert("the selected text is "+bkg.Addr_details.place);
}
</script>
init đang tải tùy chọn.html .Điều này không cung cấp cho tôi v alue. infact nó chỉ chấm dứt lúc khởi tạo của chrome.extension.backgroundPage.
Một cách tiếp cận khác mà tôi đã thử là tạo một yêu cầu tương tự (như đã có tại contentcript.js) từ contentscript.js với một lời chào khác và thêm người nghe vào tùy chọn.html .Điều đó dường như không hoạt động ở phía bên nhận (tùy chọn trang) bởi vì tôi nhận được gọi lại tại contentcript sau khi request.I chắc chắn đang làm một cái gì đó sai, amnt tôi? Xin vui lòng giúp đỡ.
"API chrome.extension.getBackgroundPage() không hữu ích" Tại sao? –