Используйте chrome.extension API .
Вы можете отправлять запросы назад и вперед или даже лучше использовать порт для непрерывной связи.
Приведенный мною пример создаст двустороннюю связь между всплывающим и фоновым страницами, которые соединяются при открытии всплывающего окна.
Просто создайте файл socket.js, который включен в обафоновая страница и всплывающая страница.Затем для каждого вы можете просто объявить:
new Socket();
Вот реализация 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.
}
});
});
};
Убедитесь, что вы выполняете вызовы универсального метода в прослушивателе сообщений для вас,Мне нравится формат, который я дал выше - он очень надежный.Чтобы отправлять сообщения туда и обратно, просто отправьте их в сокет:
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
Так что, если бы это было выполнено со всплывающей страницы, фоновая страница вызывала бы:
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
Для меня этоэто очень хороший повторно используемый объект javascript.Вы даже можете добавить определенные функции-прототипы, если хотите - таким образом, отправлять сообщения стало еще проще:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
Теперь все, что вы должны сказать:
socket.sendOneTwo();