Чтобы избежать зависания всего браузера (с функцией задержки), вы можете использовать setTimeOut
для выполнения функции на расстоянии 20000 миллисекунд.
Все setTimeout
выполняются сразу после друг друга. Существует функция, запланированная на каждые миллисекунды. В каждом цикле параметр atTime увеличивается на 20000 (20 секунд). После этого ваша страница остается бездействующей, а функции setTimeout выполняются в назначенное время.
Обратите внимание на setTimeout("window.open('" + site + "')", atTime);
, Мы не можем сделать setTimeout(window.open(site), atTime);
потому что функция между setTimeout вычисляется во время выполнения, а переменная site
будет иметь последнее значение цикла. Итак, мы делаем setTimeout("window.open('xxx')", atTime);
где ххх меняется в цикле. Таким образом, переменная устанавливается в команде выполнения. (Надеюсь, я достаточно ясно)
Вот сценарий:
<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>