У меня есть следующий скрипт из поста от Дениса с этого URL

Это именно то, что я ищу, но мне нужно иметь возможность открывать каждый URL с интервалом в 20 или 30 секунд.

<script>
function openWindow(){
    var x = document.getElementById('a').value.split('\n');
    for (var i = 0; i < x.length; i++)
        if (x[i].indexOf('.') > 0)
            if (x[i].indexOf('://') < 0)
                window.open('http://'+x[i]);
            else
                window.open(x[i]);
}
</script>

Кто-нибудь может помочь?

1 ответ1

0

Чтобы избежать зависания всего браузера (с функцией задержки), вы можете использовать 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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .