Para evitar o congelamento de todo o navegador (com uma função de atraso), você pode usar setTimeOut
para executar uma função com 20000 milissegundos de intervalo.
Todos os setTimeout
são executados um após o outro. Existe uma função agendada em cada milésimo de segundo atTime. Cada loop do parâmetro atTime é aumentado em 20.000 (20 segundos). Depois disso, sua página permanece inativa e as funções setTimeout são executadas nos horários designados.
Observe o setTimeout("window.open('" + site + "')", atTime);
. Não podemos fazer setTimeout(window.open(site), atTime);
porque a função entre setTimeout é avaliada no tempo de execução e a variável site
terá o último valor do loop. Então nós fazemos um setTimeout("window.open('xxx')", atTime);
onde xxx muda no loop. Desta forma, a variável é definida no comando de execução. (Espero que eu esteja claro o suficiente)
Aqui está o script:
<script>
function openWindow(){
var x = document.getElementById('a').value.split('\n');
atTime = 0;
for (var i = 0; i < x.length; i++) {
if (x[i].indexOf('.') > 0) {
site = x[i];
if (x[i].indexOf('://') < 0) { site = 'http://' + x[i]; }
setTimeout("window.open('" + site + "')", atTime);
atTime += 20000;
}
}
}
</script>