Подтвердить что ты не робот

Как определить, существует ли окно в Javascript?

Я видел способы увидеть, открылось ли какое-либо окно, открытое для определенного script, но что, если это не так?

У меня есть небольшое окно, в котором есть кнопка для загрузки большого окна. Когда я закрываю большой, я хочу, чтобы конкретный onUnload или onBeforeUnload загорелся, если маленький закрыт; если он все еще открыт, эти процедуры не будут срабатывать. У меня может быть просто массивный мозговой пердит, но я не могу понять, как проверить, открыто ли другое окно. Большой не открывает его, поэтому я не могу просто записать ручку с ее открытия.

В более короткие сроки: если окно A открыло окно B, как я могу проверить в окне B, если окно A все еще существует?

4b9b3361

Ответ 1

if(window.opener && !window.opener.closed)
    alert('Yup, still there.');

Ответ 2

window.closed будет установлено значение true, если вы вытащили окно и оно было закрыто (через script или пользователя).

var win = window.open('...')';
if (win.closed)

Ваше дело выглядит следующим образом:

В всплывающем окне вы можете проверить, открыто ли открывшееся окно с помощью window.opener.closed

Получить дескриптор окна по имени

Я уже упоминал, что не могу просто получить дескриптор окна по имени в комментариях. Тем не менее, я сделал некоторые исследования и обнаружил, что в FF/IE/Chrome работает следующее: это хак, я не видел, чтобы он упоминался где-то как ожидаемое поведение, поэтому я не стал бы слишком полагаться на него, но было бы интересно найти его работу! В моем коде я бы все равно просто обошел требуемые дескрипторы.

//opened a window without storing a handle, but gave it a name
window.open('/some/url', 'xxx');

// now I need to get a reference to that window
// Calling open without setting a url gets you
// a reference and doesn't reload the window
var win = window.open('', 'xxx')

Ответ 3

Используйте try {} и catch (err) {}.

try{
window.opener.document.body.getElementById('#elementId'); // do some action with window. opener
}
catch(err){
// if we are here then probably there is no window.opener
window.close(); // closing this window or whatever you want
}

Ответ 4

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

if (!!window) {
  console.log('Exist');
}