Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

175
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda