Как я могу ссылаться на всплывающее окно с двух разных страниц? - PullRequest
4 голосов
/ 23 января 2009

Мне нужно разрешить пользователю щелкнуть ссылку в "page-1.htm" и открыть всплывающее окно. Затем, когда пользователь просматривает «page-2.htm» в главном окне браузера, я должен иметь возможность ссылаться на всплывающее окно.

JavaScript в "page-1.htm"

var playerWin = window.open("player.htm", "playerWin", "width=300,height=130");
playerWin.play("song.mp3");  // play() is a function in player.htm

JavaScript в "page-2.htm"

playerWin.play("tune.mp3");

Этот код в page-2.htm генерирует ошибку "playerWin не определен". Это понятно, поскольку на page-2.htm не определена переменная с именем playerWin .

У меня вопрос: могу ли я ссылаться на всплывающее окно со страницы 2.htm?

Ответы [ 5 ]

5 голосов
/ 23 января 2009

Я только что провел быструю проверку, даже после того, как вы покинули открывающую страницу, во всплывающем окне все еще есть объект «открывающего», и вы можете получить к нему доступ. Так что либо опрашивайте новичка и сбрасывайте ссылку, либо добавьте таймер после того, как вы покинете страницу, чтобы подождать, а затем снова связать.

1.htm

<script>
var w = window.open("p.htm", "playerWin", "width=300,height=130");
</script>
<a href="2.htm">2</a>

p.htm

<a href="javascript:opener.w=this;">re-link</a>

2.htm

<script>
    var w;
</script>
<a  href="javascript:alert(w);">check</a>
2 голосов
/ 23 января 2009

Ответ - нет. Большинство браузеров полностью изолируют окно и документ от одной навигации к другой. Нет места, куда вы могли бы поместить ссылку на всплывающее окно, которое сохранится при переходе на страницу 2.

1 голос
/ 23 января 2009

Вам нужно поместить page-1.htm в iframe (который занимает полное окно браузера) ... затем запустить и связаться с всплывающим окном через родительское окно страницы-1.

т. (извините за псевдокод)

user clicks on link in page-1
page-1 asks it's parent window to open a popup
popup opens

user navigates away (in the iframe)
user clicks a link in page-2
page-2 asks it's parent window to close it's popup

Пока все находятся в одном домене, а навигация остается в пределах iframe, это должно работать

0 голосов
/ 08 мая 2012

Принятый ответ не работал для меня в Firefox 12.0. В настоящее время я работаю над проектом, в котором приложение должно постоянно знать, какие всплывающие окна открываются / закрываются при переходе от страницы к странице или обновлении текущей страницы. Я использую файлы cookie JavaScript для хранения информации о клиенте каждый раз, когда всплывающее окно открывается или закрывается. Не идеально, но это хороший вариант, если вам не нужно что-то на 100% надежное. Мне кажется, что попытка сохранить переменные JavaScript во время перезагрузки страницы всегда будет менее надежной, а попытка хранить информацию о всплывающих окнах на сервере вообще не имеет смысла, так что же еще остается, кроме файлов cookie?

0 голосов
/ 23 января 2009

Раньше такого не видел ... Я собираюсь предположить, что вы делаете это, потому что вам нужно, и у вас нет возможности организовать страницы по-другому.

Поскольку вы используете ASP.NET, просто установите для страницы 2 значение сеанса. Затем на странице проигрывателя запустите таймер AJAX, чтобы проверить переменную сеанса, а затем выполните соответствующее действие, поскольку он имеет дескриптор во всплывающем окне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...