Estoy tratando de abrir una pestaña varias veces usando el código JavaScript que se proporciona a continuación.
function webAssign() { let i; let myWin; for (i = 1; i < 4; i++) { console.log(i); myWin = window.open("index.html"); myWin.close(); } }Después de ejecutar este código, arroja el error que se indica a continuación.
Uncaught TypeError: myWin is null
¿Como puedó resolver esté problema?
Desde la página de MDN para window.open :
Valor devuelto
Un objeto WindowProxy, que es básicamente un envoltorio delgado para el objeto Window que representa la ventana recién creada, y tiene todas sus funciones disponibles. Si no se pudo abrir la ventana, el valor devuelto es
null.
(mi énfasis)
Hay contextos (entornos donde su código puede estar ejecutándose) que no pueden abrir ventanas o no pueden abrir ventanas a ciertos orígenes. En esos contextos, window.open devuelve null . Por ejemplo, la función Stack Snippets aquí en SO no permite window.open :
function webAssign() { let i; let myWin; for (i = 1; i < 4; i++) { console.log(i); myWin = window.open("index.html"); myWin.close(); } } webAssign();Ejecutar eso en Chrome da el error (en la consola web):
Se bloqueó la apertura de 'https://stacksnippets.net/index.html' en una nueva ventana porque la solicitud se realizó en un marco de espacio aislado cuyo permiso 'permitir ventanas emergentes' no está configurado.
Pero aparte de eso, abrir y cerrar ventanas de inmediato en un ciclo cerrado no tiene ningún sentido.