У нас есть следующая ситуация, работающая от единственного домена:
Разбейте на страницы использование window.open()
открыть именованное окно (раскрывающийся плеер). window.open()
дает странице A ссылку на окно.
Пользователь теперь перезагружает страницу A. Ссылка на именованное окно потеряна. Используя window.open()
"найти" окно имеет неудачный побочный эффект перезагрузки его (нежелательный). Там какой-либо другой путь состоит в том, чтобы получить ссылку на это окно?
Попробуйте так:
var playerUrl = 'http://my.player...';
var popupPlayer= window.open('', 'popupPlayer', 'width=150,height=100') ;
if(popupPlayer.location.href == 'about:blank' ){
popupPlayer.location = playerUrl ;
}
popupPlayer.focus();
Откроется пустое окно с уникальным именем. Поскольку url пустой, содержимое окна не будет перезагружено.
AFAIK, нет, нет ..
Хакерство типа «грязный, но, наверное, сработает» будет заключаться в том, чтобы периодически сбрасывать ссылку на родительское окно из всплывающего окна с помощью window.opener примерно таким кодом:
setInterval(function() { if(window.opener) { window.opener.document.myPopupWindow = window } }, 100)
В родительском окне вы иметь доступ к document.myPopupWindow даже после перезагрузки (ну, через 100 мсек после перезагрузки). Это должно работать в кросс-браузере.
На самом деле вы уничтожили родителя (страницу A) созданного окна (Popup), так что у него больше нет ссылки на исходного родителя, поэтому вы не можете получить прямую ссылку.
Единственное решение, о котором я могу думать, это использование браузера, который предлагает вам добавленную javascript-возможность перебирать активные окна (вкладки) и находить то, которое имеет специальное свойство (т.е. вашу перезагруженную страницу A), которое распознается всплывающим окном.
К сожалению, я полагаю, что только firefox имеет некоторые дополнительные возможности или расширения, которые дают вам такую гибкость. (это также риск для безопасности)
.