net - depurar javascript chrome
Extensión de Chrome: Error de puerto: no se pudo establecer la conexión. El extremo receptor no existe. (2)
Cuando trato de comunicarme entre mi script de contenido y de fondo, obtengo los siguientes errores:
Port error: Could not establish connection. Receiving end does not exist.
Error in event handler for ''undefined'': Cannot read property ''message'' of undefined
TypeError: Cannot read property ''message'' of undefined
background.js
function onRequest(request, sender, callbackFunction) {
console.log("Me (BS) became this Message:" + request.message);
sendResponse({message: request.message})
};
chrome.extension.onRequest.addListener(onRequest);
streamcloud.js
function contactBackground(nachricht){
chrome.extension.sendMessage({message: nachricht}, function(response) {
console.log("The Background Script got the following Message: " + response.message);
});
}
y mi manifest.json
{
"name": "InstantWatch - Dev",
"manifest_version": 2,
"version": "0.7",
"permissions": ["tabs", "http://*/", "https://*/"],
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "InstantWatch",
"default_icon" : "icon.ico"
},
"content_scripts": [
{
"matches": ["http://*/*", "http://*/*"],
"js": ["jquery.js", "streamcloud.js"]
}
]
}
Encontré la solución para agregar una background_page: "background.html" con un background.html vacío, pero como background_page no es compatible desde manifest_version: 2, no puedo usar eso.
En lugar de
chrome.extension.onRequest.addListener(onRequest);
Utilizar
chrome.extension.onMessage.addListener(onRequest);
Dado que está utilizando sendMessage y no sendRequest.
El análisis de mensajes se ha actualizado en la nueva versión de Chrome. sendRequest y onRequest están en desuso. Se recomienda ir con sendMessage y onMessage.
Consulte documentos para el análisis de mensajes entre Content Script y Background .
sendMessage
y onRequest
no son compatibles .
Si necesita admitir Chrome 19 y onRequest
anteriores , use onRequest
y sendRequest
:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// Warning: Chrome 19- [receiver]
});
chrome.extension.sendRequest(message, optional_sendResponse);
Para Chrome 20 - 25 , usa chrome.extension. onMessage
chrome.extension. onMessage
y chrome.extension. sendMessage
chrome.extension. sendMessage
:
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
// Chrome 20+
});
chrome.extension.sendMessage(message, optional_sendResponse);
Para Chrome 26+ , use chrome .runtime. onMessage
chrome .runtime. onMessage
y chrome .runtime. sendMessage
chrome .runtime. sendMessage
.
Nota: A partir de Chrome 26, los métodos obsoletos siguen siendo compatibles, aunque no documentados. Si tienes la oportunidad, actualiza tu extensión para usar los nuevos métodos, para asegurarte de que tu extensión funcionará en el futuro.
Vea esta respuesta para el código para crear un que sea compatible con Chrome 20+.