Considere el siguiente caso:
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?
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.