es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo obtener datos JSON desde una extensión de navegador (Chrome) de otro servidor?

Estoy escribiendo una extensión de navegador que periódicamente debe recibir la tasa de cambio en formato JSON y colocarla en almacenamiento local. Pero cuando intento hacer esto en el código de una página de cualquier sitio, obtengo un error:

Access to XMLHttpRequest at 'https://my.server.domain/currency.txt' from origin 'https://developer.mozilla.org' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Muestra de código para la solicitud:

$updateUrl = "hhttps://my.server.domain/currency.txt";
$.get($updateUrl).done(function($updData) {

});

El único lugar donde puedo ejecutar un script como este es en popup.html, pero necesito que las actualizaciones se inicien automáticamente. Intenté hacerlo a través de Background pero en manifest v3 ya no existe esa posibilidad.

La única opción es abrir periódicamente la página de extensión de update.html y realizar actualizaciones en ella, pero esto sucede abriendo una nueva pestaña, y me gustaría hacer esto en segundo plano.

¿Algún consejo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en javascript y extensiones de Google Chrome, sugiero usar el evento chrome.runtime.onMessageExternal para recibir la tasa de cambio en formato JSON desde una fuente externa. Este evento permite que una extensión reciba mensajes de fuentes externas sin ser bloqueada por la política CORS.

    Una vez que la extensión recibe el mensaje, puede almacenar la tasa de cambio en el almacenamiento local utilizando la API chrome.storage. Esto garantizará que los datos sean persistentes incluso si la extensión se cierra o se reinicia el navegador.

    Para recibir actualizaciones periódicamente, puede utilizar la API chrome.alarms para programar una alarma periódica que active una función en la página de fondo para obtener la tasa de cambio actualizada. Este enfoque elimina la necesidad de abrir constantemente una nueva pestaña o ventana emergente, y las actualizaciones se pueden realizar en segundo plano sin interrumpir la experiencia de navegación del usuario.

    En general, la combinación de las APIs chrome.runtime.onMessageExternal, chrome.storage y chrome.alarms puede proporcionar una solución sólida y confiable para recibir y almacenar periódicamente datos de tasa de cambio en una extensión de Google Chrome.

Comments are closed.