Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
Mensajería entre la ventana del navegador y la extensión web

Resumen:

Suponiendo una extensión y una página secundaria, una página secundaria no tiene idea de quién la cargó y la extensión no puede saber cuándo se cargó la página secundaria. Por lo tanto, no es posible crear un postMessage entre los dos de manera confiable porque una extensión nunca tendrá el mismo dominio que una página secundaria.

Detalles:

Tengo una extensión que debe funcionar entre navegadores. La extensión tiene un botón que abre otra página window.open('https://subdomain.mydomain.com) . Esa página se abre en una nueva pestaña. Desafortunadamente, debido a que una extensión no tiene un dominio, el navegador trata la página web y la extensión como dominios diferentes, lo que significa que no tengo acceso a la mayoría de las API debido a las protecciones entre dominios.

Intentos:

window.referrer es una cadena vacía en la página secundaria.

window.opener solo funciona en Chrome pero no en Firefox.

window.postMessage('test message', 'chrome-extension://my-id'); Esto no funciona en la página secundaria y no sé por qué, ya que el objetivo solo sería la extensión.

window.postMessage('test message','*'); Esto tampoco devuelve el mensaje a la extensión aunque no se especifique el origen y debería enviarlo a todas partes.

externally_connectable que se agrega al manifiesto. Esto no funciona porque Firefox aún no lo tiene implementado.

Solución posible:

La única forma en que puedo pensar en hacerlo es hacer que el padre abra la página secundaria y luego haga un tipo de mensaje de ping como (editado)

 const w = window.open('https://sub.mydomain.com'); setInterval(() => { w.postMessage('test message', 'https://sub.mydomain.com'); }, 1000);

En el niño, tendría un oyente de mensajes como

 window.addEventListener('message', (event) => { event.source.postMessage('message back to ext', event.origin); });

Creo que en ese momento, puede usar el evento para enviar un mensaje a la página principal. Sin embargo, la basura de Firefox recolecta la variable de la ventana antes de que pueda comenzar el intervalo establecido y, por lo tanto, nunca enviamos un mensaje.

Pregunta:

¿Alguien ha encontrado una buena solución a este problema todavía?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!