Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

140
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda