Найти окно, ранее открытое window.open
У нас есть следующая ситуация, работающая из одного домена:
Страница A использует window.open()
, чтобы открыть именованное окно (всплывающее окно). window.open()
предоставляет страницу A ссылку на окно.
Пользователь теперь перезагружает страницу A. Ссылка на именованное окно теряется. Используя window.open()
, чтобы "найти", окно имеет неудачный побочный эффект перезагрузки (нежелательно). Есть ли другой способ получить ссылку на это окно?
Ответы
Ответ 1
Попробуйте следующее:
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-адрес пуст, содержимое окна не будет перезагружено.
Ответ 2
AFAIK, нет, нет.
Взаимодействие типа "грязный-но-я-догадка" будет состоять в том, чтобы периодически reset ссылаться на родительское окно из всплывающего окна, используя window.opener, с чем-то вроде этого кода:
setInterval(function() {
if(window.opener) {
window.opener.document.myPopupWindow = window
}
}, 100)
В родительском окне вы сможете получить доступ к document.myPopupWindow, даже после перезагрузки (ну, через 100 мс после перезагрузки). Это должно работать с перекрестным браузером.
Ответ 3
Это должно сработать. Добавьте этот код во всплывающее окно:
function updateOpener() {
if (window.opener)
window.opener.document.myPopupWindow = window;
else
setTimeout(updateOpener, 100);
}
updateOpener();
И это при загрузке родительского окна. Чтобы убедиться, что myPopupWindow установлен, подождите 100 мс, прежде чем обращаться к нему.
setTimeout(function() {
if (document.myPopupWindow)
document.myPopupWindow.focus();
}, 100);
Ответ 4
Фактически вы уничтожаете родителя (страница A) созданного окна (Popup), поэтому он больше не ссылается на исходный родитель, поэтому вы не можете получить прямую ссылку.
Единственное решение, о котором я могу думать, - это использовать браузер, который предлагает вам возможность добавления javascript для перехода через активные окна (вкладки) и поиска того, у кого есть специальное свойство (то есть: ваша перезагруженная страница A), которая распознается всплывающим.
К сожалению, я думаю, что только firefox имеет некоторые дополнительные возможности или расширение, которые дают вам эту гибкость. (это также угроза безопасности)