Показать сообщение отдельно
  #5 (permalink)  
Старый 17.05.2013, 13:51
Кандидат Javascript-наук
Отправить личное сообщение для OklickSpb Посмотреть профиль Найти все сообщения от OklickSpb
 
Регистрация: 17.02.2012
Сообщений: 130

На всякий случай вот код:
Код родителя:
var OnlineConsultantWindow = null;
	var checkWindowOpenInterval = false;
	//Функция, в которую приходит ссылка на дочернее окно в случает его(родительского окна) перезагрузки
	function reloadCheckOpenWindow(target){
		alert("Прием")
			OnlineConsultantWindow = target;
			if(checkWindowOpenInterval == false){
				checkOpenWindow()
			}
	}
	//Функция которая запускается как только загружается окно через window.open
	function windowReady(myWindow){
		OnlineConsultantWindow.myWindow(OnlineConsultantWindow)
	}
	//Функция срабатывающая если дочернее окно закрыли
	function exitChatWindow(){
		OnlineConsultantWindow = null;
		clearInterval(checkWindowOpenInterval);
		alert("Окно закрыто!");
	}
	//Функция, которая проверяет открыто ли окно или нет (так как в опере onunload не работает)
	function checkOpenWindow(){
		checkWindowOpenInterval = setInterval(function(){
			if (OnlineConsultantWindow.closed) {
				clearInterval(checkWindowOpenInterval);
				checkWindowOpenInterval = false
				exitChatWindow()
			}
		}, 200)
	}
//Функция вызывающая window.open
$(".OnlineConsultantMax .expand").click(function () {
   if(OnlineConsultantWindow != null){
      OnlineConsultantWindow.focus();
   }else{
      var resizable = "resizable=1"
      if($.browser.msie)
      {
           var resizable = "resizable=0"
      }
      var params = 'directories=0, menubar=0, toolbar=0, location=0, width=520,height=420,toolbar=1,scrollbars=1,'+resizable;
      OnlineConsultantWindow = window.open("http://test.ru/tested/test396/chat.php", "ChatWindow", params)
      if(OnlineConsultantWindow == null){
         alert("Ошибка")
      }
      OnlineConsultantWindow.focus()
   }
})

Код открывшегося окна:
var myWindowTarget
//При первой загрузке окна здесь схраняется ссылка на окно
function myWindow(target){
    myWindowTarget = target
}
//Фнукция отправляет ссылку на себя, на случай если пользователь перезагрузит родительское окно
setInterval(function(){
alert("Проверка")
	if(typeof window.opener.reloadCheckOpenWindow == 'function') {
		alert("отправка")
		window.opener.reloadCheckOpenWindow(myWindowTarget)
	}
}, 200)
opener.windowReady(true)

Если перезагружать страницы, то все нормально работает, если перезагрузить браузер, то связь теряется, опера не видит window.opener.reloadCheckOpenWindow, типо такой функции нет...

Последний раз редактировалось OklickSpb, 17.05.2013 в 14:15.
Ответить с цитированием