una quitar perdidas pagina notificaciones llegan llamadas las google desactivar como chrome google-chrome google-chrome-extension

google chrome - quitar - Error al pasar mensajes de Chrome: intento de usar un objeto de puerto desconectado



me llegan notificaciones de una pagina (1)

Mi extensión de Chrome utiliza un objeto de ''Puerto'' de larga duración para pasar mensajes entre ''script de contenido'' y ''página emergente''. El ''popup'' puede enviar un mensaje al agente de escucha del ''script de contenido''. Sin embargo, el objeto ''Puerto'' en ''script de contenido'' no puede enviar mensajes a la página ''emergente''.

var port = chrome.extension.connect({"name":"swap"}); // listener for incoming connections chrome.extension.onConnect.addListener(function( incomingPort ){ // listener on incoming messages incomingPort.onMessage.addListener(function( msg ){ if( msg.command === ''get_scripts'' ){ //do work } var scrs = { ''scripts'' : ''name'' }; var result = port.postMessage( scrs ); }); });

Al ejecutar ''port.postMessage (Object obj)'', el complemento arroja el siguiente Error,

Error in event handler for ''undefined'': Attempting to use a disconnected port object Error: Attempting to use a disconnected port object at PortImpl.postMessage (miscellaneous_bindings:54:5) at chrome-extension://loiamkgdhfjdlkcpehnebipeinpcicfj/swap.js:27:31 at [object Object].dispatch (event_bindings:203:41) at Object.<anonymous> (miscellaneous_bindings:250:22) event_bindings:207

He intentado usar el objeto ''Port'' y el objeto ''incomingPort'', ambos lanzan el mismo ''Error''. Parece que tiene que ver con el alcance del objeto ''Puerto'' pre creado.

El código del complemento está disponible en este repositorio de git https://github.com/snambi/chrome_plugin/tree/master/src/chrome

¿Qué hay de malo en este complemento?


He revisado tu código y no tiene sentido para mí:

  • ¿Sabía que un puerto tiene un método onMessage y postMessage en ambos lados? Un solo puerto es suficiente para comunicarse en ambas direcciones.
  • Comunicarse entre una ventana emergente y un script de contenido en su camino va a ser terriblemente difícil. Es difícil iniciar el script de contenido y la ventana emergente simultáneamente.

Como su extensión no tiene una página de fondo y un script de contenido relativamente inútil, asumo que el núcleo de su extensión es la ventana emergente de acción del navegador. En lugar de inyectar un script de contenido de manera predeterminada, también puede usar el siguiente flujo:

  1. El usuario hace clic en la acción del navegador
  2. popup.html y popup.js se ejecutan.

También he visto que estás usando port == null para comprobar si un puerto es válido o no. Si lo hace, asegúrese de que la comparación tenga sentido, anulando la variable cuando el puerto esté desconectado:

var port; chrome.runtime.onConnect.addListener(function(_port) { // ...optional validation of port.name... port = _port; port.onMessage.addListener(function(message) { /* .. logic .. */}); port.onDisconnect.addListener(function() { port = null; }); });