testWindow
переменная является объектом и не будет != null
, когда окно закрыто. Вместо этого вы должны использовать свойство testWindow.closed
. Однако, как указывали @Tim и @Shadow Wizard, тайм-аут будет срабатывать после выполнения вашего кода.
В зависимости от того, что вы хотите сделать - вы можете проверить состояние окна следующим образом:
var testWindow;// declared here so we can access it from outside the function.
function openwindow() {
testWindow = window.open("popup.php");
window.setTimeout(function() { testWindow.close(); }, 1000);
}
if (!testWindow) {
alert('testWindow hasnt been created by openwindow yet');
}
if (testWindow && !testWindow.closed) {
alert('testWindow is open');
}
if (testWindow && testWindow.closed) {
alert('testWindow is closed');
}
Это также будет работать, если пользователь закрывает окно, прежде чем делать.
ОБНОВЛЕНО:
Просто чтобы прояснить - и прости меня, если вы это уже.
Что SetTimeout делает, говорит:
«выполнить эту заданную функцию в секунду, а тем временем продолжать выполнение остальной части этого кода».
Таким образом, ваша функция завершит выполнение так, как будто setTimeout не существует. Позже (через 1 секунду) срабатывает функция в setTimeout.
Надеюсь, это полезно.
Что такое «действие», которое должно произойти? –