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

190
Visualizações
Reaccionar: window.close() trabajando en Chrome pero no en Firefox

Tengo una aplicación de reacción de una sola página alojada en páginas de github, que viene con muchas limitaciones. Para que mi flujo de "Iniciar sesión con Twitter" funcione, descubrí que era necesario abrir la URL dinámica de inicio de sesión de Twitter en una nueva pestaña, darle a la API de Twitter un punto final en mi backend como la URL de devolución de llamada y luego redirigir mi backend el usuario a la URL raíz de mi cliente frontend con el token JWT generado en la URL como una consulta ( /?token=abcd1234 ). Luego tengo un código en la página de destino de mi cliente que se ve así:

 useEffect(() => { // at /?close, just close the window if (props.location.search === '?close') { window.close() closeWindow() setShowCloseMessage(true) // at /?token, save the token to localstorage, then close the window } else if (tokenUrlRE.test(props.location.search)) { const token = props.location.search.match(tokenRE)[0] localStorage.setItem('token', token) window.close() closeWindow() setShowCloseMessage(true) } }, [])

Esto funciona bien en Chrome, pero no en Firefox. ¿Quizás Firefox es más estricto al exigir que Windows solo se cierre con el script que lo abrió, y Chrome permite que cualquier script en el mismo dominio que abrió una ventana lo cierre?

De todos modos, varias otras respuestas aquí en Stackexchange recomendaron el siguiente código, que agregué dentro de la función closeWindow() que aparece en el código anterior:

 function closeWindow() { console.log('clicked close') window.open('', '_parent', '') window.close() }

Pero esto tampoco funcionó en Firefox. Además, esta solución adicional que encontré provocó que React fallara:

open(location, '_self').close()

¿Hay alguna manera de lograr lo que quiero con Firefox? Por el momento, simplemente he usado esa variable de estado showClose que se ve en el primer bloque de código para mostrar un mensaje de "Inicio de sesión exitoso, regrese a la pestaña anterior", pero esto es menos que ideal.

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