powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript - Разрешение отклонено
3 сообщений из 3, страница 1 из 1
JavaScript - Разрешение отклонено
    #34471292
msqrt84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Есть задачка, заключающаяся в автоматическом закрытии дочерних окон при закрытии родительского окна. При загрузке дочернего окна запускается таймер:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
function timedClose()
{
     if (child != null)
          if (child == "true")
          {
               try
               {
                    if (window.opener.closed)
                    window.close();                        
               }
               catch(err)
               {
                    alert("Ошибка! " + err.description + ".");
               }
                                
               try
               {
                    if (window.parent.closed)
                    window.close();
               }
               catch(err) { }
          }
                
     t=setTimeout("timedClose()",  50 );
}

Собственно, в первом блоке try...catch с переменным успехом (т.е. иногда да, а иногда нет) возникает вышеупомянутое исключение. Грешу на Windows Updates, так уж совпало. Всё, что мог для надёжных узлов настроил (в IE6).

Есть мнения?

Спасибо.
...
Рейтинг: 0 / 0
JavaScript - Разрешение отклонено
    #34471386
mrJust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А откуда у вас в функции child? - глобальная переменная? msqrt84function timedClose()
{
if (child != null)
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
try
{
  if ((window.opener) && (window.opener.closed))
    window.close();                        
}
может opener не существует для текущего окна, тогда и летит exception
...
Рейтинг: 0 / 0
JavaScript - Разрешение отклонено
    #34472842
msqrt84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrJustА откуда у вас в функции child? - глобальная переменная?
Да, глобальная переменная.
Ну, это не существенно. В принципе, можно и без неё.

mrJustПопробуйте так:
Код: plaintext
1.
2.
3.
4.
try
{
  if ((window.opener) && (window.opener.closed))
    window.close();                        
}

Не помогло.


mrJustможет opener не существует для текущего окна, тогда и летит exception
Вот это точно. Изначально, моя ошибка. Но вот IE6 (на нём отлаживал), зараза, всё равно иногда не выдавал исключения, даже на некорректный код (нельзя получить доступ к полю "closed"), а вот FF всегда об ошибке сообщал.

Переделал код следующим образом и всё ОК (и IE и FF и Netscape и Opera корректно обрабатывают):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function timedClose()
{
    if (child != null)
        if (child == "true")
        {
            if (window.opener)
            {
                try
                {
                    if (window.opener.closed)
                        window.close();
                }
                catch (err)
                {
                    window.close();
                }
            }
            else
                window.close();
        }
                
	t=setTimeout("timedClose()",  50 );
}

Спасибо за наводку.

P.S.
1.Но вот IE6 всё равно даже при закрытии родительского окна выражение "window.opener" делает "true". Приходится через исключение закрывать дочернее окно.
2.От "window.parent" совсем отказался. Кстати, не мог бы кто-нибудь объяснить, в чём собственно разница между opener и parent? Ссылочку, если можно, а то толкового руководства (скорее спецификации) не нашёл.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript - Разрешение отклонено
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]