Задержка после открытия новой вкладки с помощью window.open();?

Я ищу код javascript, который будет автоматически открывать новые вкладки (окна) через определенный интервал времени.

После выполнения первого URL-адреса setTimeout()/setIntervals() игнорируются ?? Пожалуйста помоги!

<html>
<head>
<script type="text/javascript">
function open_win() {
setInterval(window.open("http://www.google.com"), 1000);
setInterval(window.open("http://www.yahoo.com"), 1000);
setInterval(window.open("http://www.bing.com"), 1000);
}
</script>
</head>

<body>
<form>
<input type=button value="Open Windows" onclick="open_win()">
</form>
</body>

Спасибо


person user2647691    schedule 03.08.2013    source источник
comment
setInterval будет выполняться до тех пор, пока вы его не очистите. Если вы заставите это работать, вы будете постоянно открывать новые окна каждую секунду.   -  person    schedule 03.08.2013
comment
Спасибо за быстрый ответ, Майк В., извините, я забыл упомянуть, что первая функция - это автоматическая отправка, во время процесса отправки кажется, что все таймеры становятся недействительными и замыкаются.   -  person user2647691    schedule 03.08.2013


Ответы (1)


Прежде всего, вы не хотите использовать для этого setInterval, setInterval:

Вызывает функцию или многократно выполняет фрагмент кода с фиксированной задержкой по времени между каждым вызовом этой функции.

Вы хотите использовать setTimeout, который:

Вызывает функцию или выполняет фрагмент кода после указанной задержки.

Следующая проблема заключается в том, что setTimeout хочет использовать функцию в качестве первого аргумента, но window.open возвращает ссылку на объект окна. Вы хотите обернуть эти вызовы window.open внутри функций:

function open_win() {
    setTimeout(function() { window.open("http://www.google.com") }, 1000);
    setTimeout(function() { window.open("http://www.yahoo.com")  }, 1000);
    setTimeout(function() { window.open("http://www.bing.com")   }, 1000);
}

В вашей версии откроется вкладка Google, потому что вызов window.open("http://www.google.com") будет выполняться при построении списка аргументов для первого вызова setInterval. Предположительно, вы получаете исключение или что-то в этом роде от setInterval, когда передаете ему ссылку на окно, так что остальные даже не достигаются.

person mu is too short    schedule 03.08.2013