Почему этот 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