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, время: 20:04. |