Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.06.2013, 08:13
Аватар для FreeStyler
Аспирант
Отправить личное сообщение для FreeStyler Посмотреть профиль Найти все сообщения от FreeStyler
 
Регистрация: 13.09.2009
Сообщений: 52

TypeError: can't access dead object в расширении при window.open
Делаю расширение. Хочу кнопку в тулбаре, при нажатии которой открывается окошко, если оно ещё не открыто, а если открыто - на него передавался бы фокус.
Загвоздка в том что окошко после закрытия второй раз открываться не хочет!
Расширение выложил, там просто кнопка, в файле 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
Источник: chrome://myt/content/myt.js
Строка: 4
Вопрос почему дед обжект всё-таки определяется как объект, а свойства не доступны и вообще почему он не удаляется полностью?! -_-
Выходит что после закрытия окошка не могу никак отследить закрылось таки оно или нет, ни onclose ни onunload не цепляются.
Вложения:
Тип файла: zip myt.zip (7.1 Кб, 1 просмотров)

Последний раз редактировалось FreeStyler, 02.06.2013 в 08:33.
Ответить с цитированием
  #2 (permalink)  
Старый 02.06.2013, 12:48
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от FreeStyler
Выходит что после закрытия окошка не могу никак отследить закрылось таки оно или нет, ни onclose ни onunload не цепляются.
проверять свойство closed объекта окна, либо document === null
Ответить с цитированием
  #3 (permalink)  
Старый 02.06.2013, 17:00
Аватар для FreeStyler
Аспирант
Отправить личное сообщение для FreeStyler Посмотреть профиль Найти все сообщения от FreeStyler
 
Регистрация: 13.09.2009
Сообщений: 52

alert(popupWin.closed);
вот здесь я и проверял closed, при проверке document та же ошибка TypeError: can't access dead object
Объект как бы есть, но свойств нету! -_- Бред вообще! Нет к ним доступа и никакого алерта вообще не всплывает(
В обычном html документе работает всё нормально, а вот в расширении не хочет(
Думаю надо смотреть какие-то обходные пути, но что-то никак придумать их не могу((

Последний раз редактировалось FreeStyler, 02.06.2013 в 17:04.
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2013, 17:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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");
	}
}
Ответить с цитированием
  #5 (permalink)  
Старый 02.06.2013, 22:20
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от FreeStyler
Думаю надо смотреть какие-то обходные пути, но что-то никак придумать их не могу((
в try проверку оберните и отлавливайте исключение выбрасываемое
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2013, 02:00
Аватар для FreeStyler
Аспирант
Отправить личное сообщение для FreeStyler Посмотреть профиль Найти все сообщения от FreeStyler
 
Регистрация: 13.09.2009
Сообщений: 52

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");
}

Знал бы что можно ошибки отлавливать - не создавал бы
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нестыковка при расширении класса Object PRStudio Общие вопросы Javascript 7 16.07.2012 02:55
Как указать title при открытии окна через window.open для chrome milvic Opera, Safari и др. 4 15.01.2011 15:18
Access is denied при работе с iFrame slivka_83 Общие вопросы Javascript 1 30.09.2009 10:05