setTimeout () получить окно для отображения других функций скрипта перед активацией setTimeout - PullRequest
1 голос
/ 07 ноября 2011

Я уверен, что этот общий вопрос задавался много раз, но не могу найти решение.

У меня есть javascript, использующий функцию setTimeout (), чтобы закрыть всплывающее окно, которое я создал после заданного времени.

Проблема: если я вызываю функцию setTimeout () в том же скрипте, что и тот, который создал всплывающее окно, всплывающее окно не отображает содержимое окна, вместо этого все функционирует как отдельный скрипт иокно закрывается.Как будто вам нужно каким-то образом прервать сценарий, чтобы заставить его анализировать каждый раздел сценария перед выполнением setTimeout.

Кто-нибудь знает почему или имеет обходной путь?

<script>
var w;
function closeWindow(){ setTimeout(w.close();, 10000);}

function createWindow(){
//create the popup window.

w=window.open("","",'width=200,height=100');

// put something into the popup window
try{w.document.write('<html><head></head><body><p>the w window</p></body>  
<html>')}catch(err){
//handle error here
}

closeWindow();

//closes the createWindow() function
}
</script>

Ответы [ 3 ]

1 голос
/ 07 ноября 2011

Попробуйте следующее:

setTimeout(w.close, 10000);
1 голос
/ 07 ноября 2011

Я играл с твоим сценарием.Следующее проверено и работает:

var w;
function closeWindow(){ setTimeout("w.close();", 10000);}

function createWindow(){
//create the popup window.

w=window.open("","",'width=200,height=100');

// put something into the popup window
try{w.document.write('<html><head></head><body><p>the w window</p></body> <html>')}catch(err){
//handle error here
}
closeWindow();
//closes the createWindow() function
}

Если я правильно помню, кавычки требуются вокруг параметра кода вашей функции setTimeout, потому что в противном случае вы бы передавали возвращаемое значение кода в качестве аргумента для setTimeoutа не код, необходимый для запуска.

Надеюсь, это поможет.

1 голос
/ 07 ноября 2011

Правильный синтаксис для использования setTimeout:

setTimeout(function() {
    w.close();
}, 10000);

Функция получает либо строковый литерал, который затем оценивает , либо лучшим вариантом выполнения команд является функция: это может быть имя существующей функции (см. Пример ниже) или, как и выше, анонимная функция.

Пример использования функции по-другому:

window.setTimeout(closeWindow, 10000);

Где будет функция:

function closeWindow() {
    w.close();
}
...