Подтвердить что ты не робот

Найти окно, ранее открытое window.open

У нас есть следующая ситуация, работающая из одного домена:

Страница A использует window.open(), чтобы открыть именованное окно (всплывающее окно). window.open() предоставляет страницу A ссылку на окно.

Пользователь теперь перезагружает страницу A. Ссылка на именованное окно теряется. Используя window.open(), чтобы "найти", окно имеет неудачный побочный эффект перезагрузки (нежелательно). Есть ли другой способ получить ссылку на это окно?

4b9b3361

Ответ 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 имеет некоторые дополнительные возможности или расширение, которые дают вам эту гибкость. (это также угроза безопасности)