Ответ 1
if(window.opener && !window.opener.closed)
alert('Yup, still there.');
Я видел способы увидеть, открылось ли какое-либо окно, открытое для определенного script, но что, если это не так?
У меня есть небольшое окно, в котором есть кнопка для загрузки большого окна. Когда я закрываю большой, я хочу, чтобы конкретный onUnload
или onBeforeUnload
загорелся, если маленький закрыт; если он все еще открыт, эти процедуры не будут срабатывать. У меня может быть просто массивный мозговой пердит, но я не могу понять, как проверить, открыто ли другое окно. Большой не открывает его, поэтому я не могу просто записать ручку с ее открытия.
В более короткие сроки: если окно A открыло окно B, как я могу проверить в окне B, если окно A все еще существует?
if(window.opener && !window.opener.closed)
alert('Yup, still there.');
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')
Используйте 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
}
Попробуйте следующий код:
if (!!window) {
console.log('Exist');
}