Почему этот setTimeout не работает
Я просто вхожу в Java. Я работаю над простым script, чтобы открыть окно, а затем закрою его после небольшой задержки. Я пробовал различные коннотации следующего безрезультатно. Функция работает (открывается, затем закрывает окно), но задержка не выполняется.
function manualWindow(){
testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(testWindow.close(),5000);
}
Благодарю вас
Ответы
Ответ 1
Вы хотите:
setTimeout(function() { testWindow.close(); },5000);
Текущий код выполняет эту функцию, как только он попадает, а затем пытается запустить возвращаемое значение после задержки. Завернув его в функции, он будет работать правильно через 5 секунд.
Пример:
<html>
<head></head>
<body>
<script type="text/javascript">
function manualWindow(){
testWindow = window.open("http://www.google.co.uk","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(function() { testWindow.close() },5000);
}
manualWindow();
</script>
</body>
</html>
Ответ 2
Вы не используете setTimeout правильно. Попробуйте следующее:
function manualWindow(){
testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(function() { testWindow.close(); },5000);
}
Ответ 3
Во-первых, вы определяете свой код в анонимной функции. Эта конструкция:
(function() {
...
)();
делает две вещи. Он определяет анонимную функцию и вызывает ее. Есть причины для этого, но я не уверен, чего вы на самом деле хотите.
Вы передаете блок кода в setTimeout()
. Проблема заключается в том, что update()
не выполняется в пределах области действия при выполнении как это. Однако, если вы перейдете в указатель на функцию, чтобы это работало:
(function() {
$(document).ready(function() {
update();
});
});
потому что обновление указателя функции находится в пределах области действия этого блока.
Но, как я уже сказал, нет никакой анонимной функции, поэтому вы можете ее переписать следующим образом:
Ответ 4
Я думаю, что в вашем коде отсутствует qutoes в первом параметре testWindow.close(). Это можно исправить следующим образом:
function manualWindow() {
testWindow = window.open("http://www.google.com", "interaction", "resizable=0,width=800,height=600,status=0");
setTimeout('testWindow.close()',5000);
}
manualWindow();
Я нашел, что эта ссылка может немного помочь вам https://developer.mozilla.org/en/DOM/window.setTimeout