Uso del chrome.extension API.
Puede enviar solicitudes de ida y vuelta o incluso mejor utilizar un puerto para la comunicación continua.
El ejemplo que proporciono creará una comunicación bidireccional entre la ventana emergente y la página de fondo que se conectan cuando se abre la ventana emergente.
Simplemente cree un archivo socket.js que se incluye tanto en la página de fondo como en la página emergente. Luego, en cada puede declarar:
new Socket();
Aquí es la implementación de 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.
}
});
});
};
asegurarse de que hace el método genérico de llamadas en el trabajo de escucha de mensajes para usted. Me gusta el formato que he dado arriba, es muy robusto. Para enviar mensajes de ida y vuelta simplemente publicarlos a la toma:
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
Así que si esto hubiera ejecutado desde la página emergente entonces la página de fondo llamarían:
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
Para mí este es un muy buen objeto javascript reutilizable. Incluso puede agregar funciones prototipos específicos si desea - de esta manera sus aún más fácil para enviar mensajes:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
ahora todo lo que tiene que decir es:
socket.sendOneTwo();
relacionadas: [Comunicar entre scripts en el contexto de fondo (escritura fondo, la acción del navegador, la página de acción, Opciones de página, etc.)] (//stackoverflow.com/q/41420528) – Makyen
Posible duplicado de [¿Cómo comunicarse entre popup.js y background.js en la extensión de Chrome?] (https://stackoverflow.com/questions/13546778/how-to-communicate -between-popup-js-and-background-js-in-chrome-extension) – JerryGoyal