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

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

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

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

21
задан spender 16 March 2010 в 14:31
поделиться

3 ответа

Попробуйте так:

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 пустой, содержимое окна не будет перезагружено.

24
ответ дан 29 November 2019 в 21:41
поделиться

AFAIK, нет, нет ..

Хакерство типа «грязный, но, наверное, сработает» будет заключаться в том, чтобы периодически сбрасывать ссылку на родительское окно из всплывающего окна с помощью window.opener примерно таким кодом:


    setInterval(function() {
        if(window.opener) {
            window.opener.document.myPopupWindow = window
        }
    }, 100)

В родительском окне вы иметь доступ к document.myPopupWindow даже после перезагрузки (ну, через 100 мсек после перезагрузки). Это должно работать в кросс-браузере.

1
ответ дан 29 November 2019 в 21:41
поделиться

На самом деле вы уничтожили родителя (страницу A) созданного окна (Popup), так что у него больше нет ссылки на исходного родителя, поэтому вы не можете получить прямую ссылку.

Единственное решение, о котором я могу думать, это использование браузера, который предлагает вам добавленную javascript-возможность перебирать активные окна (вкладки) и находить то, которое имеет специальное свойство (т.е. вашу перезагруженную страницу A), которое распознается всплывающим окном.

К сожалению, я полагаю, что только firefox имеет некоторые дополнительные возможности или расширения, которые дают вам такую гибкость. (это также риск для безопасности)

.
0
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: