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

276
Visualizações
Referencia de window.opener perdida en Firefox

Considere el siguiente caso:

  • Paso 1: El sitio web A abre el sitio web B en una nueva pestaña (en este punto, el sitio web B tiene su referencia de ventana de apertura, es decir, el objeto de ventana del sitio web A en window.opener).
  • Paso 2: El sitio web B redirige al sitio web C (aquí también tenemos window.opener que hace referencia a la ventana del sitio web A).
  • Paso 3: Luego, el sitio web C realiza alguna autenticación y redirige al sitio web B. En este paso 3, el abridor de ventanas tiene la referencia del objeto de ventana actual, es decir, el objeto de ventana del sitio web B en sí (ventana.abridor === ventana) y nosotros He perdido la referencia al abridor original (es decir, un objeto de ventana del sitio web A). Necesitamos el objeto window.opener para comunicarnos con el sitio web A usando postMessage.

Representación visual de pasos

Nota: No tenemos control sobre el sitio web C y no podemos controlar cómo se redirigen de regreso al sitio web B. Además, esto solo ocurre en Firefox/Safari. En Chrome, podemos obtener la referencia de apertura original después de las redirecciones.

En caso de que el sitio web C esté redirigiendo con rel=noopener, window.opener debe ser nulo ( referencia de MDN ). No puedo entender en qué caso window.opener puede ser el objeto de ventana actual y por qué sucede en Firefox/Safari pero no en Chrome. ¿Y hay algo que podamos hacer en cualquier lugar excepto en el sitio web C para evitar esto?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Esto es posible en Firefox y Safari, window.opener puede ser la ventana actual cuando agrega target _self . Si haces window.open('someurl', '_self') entonces window.opener será la ventana actual y se abrirá en la misma pestaña en lugar de una nueva pestaña. Esto solo sucede en safari y firefox (por lo que he observado). Todos los navegadores basados en cromo no cambian el abridor de ventanas original en ningún caso.

No sé la razón exacta por la que Safari y Firefox lo manejan de esta manera. Traté de encontrar la razón pero no puedo encontrarla.

Enfrenté este problema una vez y la solución que hicimos fue pedirle al sitio web C que usara window.location.replace o window.location.href para redirigir al sitio web B para que abran el sitio web b en la misma pestaña.

over 4 years ago · Santiago Trujillo Relatório
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