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

257
Views
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 nuevo 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 answers
Answer question

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 Report
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!