Sử dụng chrome.extension API.
Bạn có thể gửi yêu cầu qua lại hoặc thậm chí tốt hơn sử dụng cổng để liên lạc liên tục.
Ví dụ tôi đưa ra sẽ tạo liên lạc hai chiều giữa cửa sổ bật lên và trang nền kết nối khi cửa sổ bật lên được mở ra.
Chỉ cần tạo tệp socket.js được bao gồm trong cả trang nền và trang bật lên. Sau đó, trên mỗi bạn chỉ có thể tuyên bố:
new Socket();
Đây là việc thực hiện socket.js:
var Socket = function() {
window.socket = this;
this.port = chrome.extension.connect({name:"popupToBackground"});
chrome.extension.onConnect.addListener(function(port) {
if(port.name == "backgroundToPopup") {}
else if(port.name == "popupToBackground") {
window.socket.port = chrome.extension.connect({name:"backgroundToPopup"});
}
else {
return;
}
port.onMessage.addListener(function(msg) {
try {
window[msg.namespace][msg.literal][msg.method].apply(this, msg.args);
}
catch(error) {
// your failed action goes here.
}
});
});
};
Hãy chắc chắn rằng bạn thực hiện các phương pháp chung gọi trong công tác nhắn listener cho bạn. Tôi thích định dạng mà tôi đã đưa ra ở trên - nó rất mạnh mẽ. Để gửi tin nhắn qua lại chỉ gửi cho họ để các ổ cắm:
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
Vì vậy, nếu điều này được thực hiện từ các trang popup sau đó trang nền sẽ gọi:
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
Đối với tôi đây là một rất đẹp đối tượng javascript có thể dùng lại. Bạn thậm chí có thể thêm chức năng nguyên mẫu cụ thể nếu bạn muốn - cách này của nó thậm chí còn dễ dàng hơn để gửi tin nhắn:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
Bây giờ tất cả các bạn có thể nói là:
socket.sendOneTwo();
liên quan: [Giao tiếp giữa các kịch bản trong bối cảnh nền (kịch bản nền, hành động trình duyệt, hành động trang, trang tùy chọn, vv)] (//stackoverflow.com/q/41420528) – Makyen
Bản sao có thể có của [Cách liên lạc giữa popup.js và background.js trong tiện ích chrome?] (https://stackoverflow.com/questions/13546778/how-to-communicate -between-popup-js-and-background-js-in-chrome-extension) – JerryGoyal