TypeError: can't access dead object в расширении при window.open
Вложений: 1
Делаю расширение. Хочу кнопку в тулбаре, при нажатии которой открывается окошко, если оно ещё не открыто, а если открыто - на него передавался бы фокус.
Загвоздка в том что окошко после закрытия второй раз открываться не хочет! Расширение выложил, там просто кнопка, в файле myt.js код: function win(){ if(typeof(popupWin)!="undefined") { alert(typeof(popupWin)); alert(popupWin.closed); } else { popupWin=window.open("http://ya.ru/","Record","width=681,height=425,resizable=yes,scrollbars=yes,status=yes"); } } Если окошко открыто при повторном нажатии на кнопку - всплывает 2 алерта: 1 - object 2 - false Если закрываем окошко и снова пытаемся отыкрыть - всплывает 1 алерт - object, а на втором консоль выдаёт ошибку: Код:
Ошибка: TypeError: can't access dead object Выходит что после закрытия окошка не могу никак отследить закрылось таки оно или нет, ни onclose ни onunload не цепляются. |
Цитата:
|
alert(popupWin.closed);вот здесь я и проверял closed, при проверке document та же ошибка TypeError: can't access dead object Объект как бы есть, но свойств нету! -_- Бред вообще! Нет к ним доступа и никакого алерта вообще не всплывает( В обычном html документе работает всё нормально, а вот в расширении не хочет( Думаю надо смотреть какие-то обходные пути, но что-то никак придумать их не могу(( |
function win(){ if(typeof(popupWin)!="undefined") { alert(typeof(popupWin)); alert(popupWin.closed); } else { window.popupWin=window.open("http://ya.ru/","Record","width=681,height=425,resizable=yes,scrollbars=yes,status=yes"); } } |
Цитата:
|
Deff, не, так тоже ошибка...
dmitriymar, спасибо большое! Я и не знал про такую конструкцию! Получилось так: function win(){ if(typeof(popupWin)!="undefined") { try {if(popupWin.focus());} catch (e) {popupWin=window.open("http://ya.ru/","Record","width=681,height=425,resizable=yes,scrollbars=yes,status=yes"); } } else popupWin=window.open("http://ya.ru/","Record","width=681,height=425,resizable=yes,scrollbars=yes,status=yes"); } Знал бы что можно ошибки отлавливать - не создавал бы :thanks: |
Часовой пояс GMT +3, время: 22:17. |