Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проблема с фокусом окна


Автор: Altar 7.2.2006, 09:36
Код

var popUpWin=0;
function popUpWindow(left, top, width, height) {    
 if (popUpWin && !popUpWin.closed){popUpWin.focus(); popUpWin.location = "ping.php";return;}
 popUpWin = open ('ping.php', 'popUpWin', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbar=no, resizable=no, copyhistory=yes, width=805, height=605, left='+left+', top='+top+', screenX='+left+', screenY='+top+'');
}

Данный код призван передать фокус окну при нажатии по ссылке. Содержание этого окна обновляется, в зависимости от нажатой ссылки. Если окно закрыто, то оно открывается заново.
Но вот в Opere, всё работает пока не закрыть popUpWin. после чего оно вновь не открывается
smile Чего можно сделать????????? в IE всё как надо.

Автор: smartov 7.2.2006, 12:10
Цитата(Altar @ 7.2.2006, 08:36 Найти цитируемый пост)

Opere

Их было много. Некоторые до сих пор 6-ю версию юзают. Уточнять надо.
Но вообще проверь где обламывается. (alert-ы тебе дебаггер в Опере)
Мое мнение - может она не понимает window.closed . Оно не описано в стандартах.
Возможно в Опере нужно проверять только if (popupWindow) {.....

Автор: Altar 7.2.2006, 12:19
Version 8.01
Build 7583
Platform Win32

Если в этом дело, то как нужно именно для Opera прописывать?

Автор: smartov 7.2.2006, 13:26
Altar Прости. Опера у меня не установлена. А качать, устанавлива и тестить прямо сейчас времени нет. Может чуть поздже.

Ты сам попробуй покопай.
Цитата(smartov @ 7.2.2006, 11:10 Найти цитируемый пост)
проверь где обламывается.

+ я тебе написал. Ты проверил так?
Цитата(smartov @ 7.2.2006, 11:10 Найти цитируемый пост)

Возможно в Опере нужно проверять только
Код
if (popupWindow) {popUpWin.focus().....


А она вообще окно открывает? Хоть в первый раз?

Автор: Altar 7.2.2006, 14:54
В первый раз ДА(открывается). И после перезагрузки тоже, но стоит его закрыть и ВСЁ... smile
Код

if (popupWindow) ...

Такая проверка дала тот же результат. Причём в строке адреса происходит какое-то безмолвное мерцание.
Создаётся впечатление, что условие Opera понимает, но пытается сделать загрузку в уже
закрытом окне почему-то.

Собственно, это всё замышлялось для IE и NetScape который с
радостью наплодит ещё кучу дополнительных окон, если ему не запретить.
Opera пректасно работает с одной строчкой без условия:
Код

popUpWin = open ('ping.php', 'popUpWin', 'toolbar=no, location=no...)


Может в условие добавить пункт "не для Оперы".
Ведь есть же случаи когда для IE прописывают одну ветвь, а для NetScape другую.
Только я не знаю как это сделать. smile

Автор: 12345c 7.2.2006, 15:38
Opera 7.54 - работает после закрывания окна.

Проверь пошагово, на каком операторе срывается (ставишь alert(0); последовательно между).

Автор: Altar 7.2.2006, 16:30
smile Вот: если закрыть второстепенное окно popUpWindow, то Опера
дальше оператора popUpWin.focus(); не двигается, хотя в этой ветви при закрытом окне ей делать нечего.

Автор: smartov 7.2.2006, 18:11
Altar
Цитата(Altar @ 7.2.2006, 13:54 Найти цитируемый пост)

Opera пректасно работает с одной строчкой без условия:

Так поставь просто проверку на useragent-a и для оперы кидай тот код, с которым она срабатывает.

Автор: Altar 7.2.2006, 18:17
Как сделать просто проверку на useragent-a? smile

Автор: 12345c 7.2.2006, 19:05
alert(navigator.userAgent) , но лучше alert(window.opera)
Получается, что не срабатывает !popUpWin.closed . Странно, не должно, но раз не срабатывает, попробуйте в случае Оперы 8.01 (parseInt(navigator.appVersion)==8.01) явно прописать при закрытии окна popUpWin в главном окне: popUpWin.closed=true; . Выглядит как баг.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)