Позвольте мне объяснить мой сценарий. У меня есть кнопка для воспроизведения/остановки кнопок CSS на моем нижнем колонтитуле. Я не хочу использовать фреймы. Когда я jplayer
кнопку воспроизведения на текущей странице (стр. 1), всплывающее окно открывается, и jplayer
начинает воспроизведение музыки. Когда я нажимаю, окно закрывается благодаря тому, что я сохраняю значение окна из начального открытия.
Теперь вот моя проблема: скажем, пользователь переезжает на другую страницу (стр. 2) на главный сайт - всплывающее окно продолжает проигрываться (это не проблема, что я намеревался). Но я хотел бы, чтобы пользователь мог нажать кнопку остановки на странице 2 и убить окно, которое было создано на стр. 1.
Я попытался использовать локальное хранилище HTML5, но это не сработало - что-то странное: объект, хранящийся в хранилище HTML5, является окном типа, поэтому он хранится. По-прежнему не удается закрыть его.
Кто-нибудь когда-либо делал это раньше или знал способ обойти это? Вот мой код (который не работает), как есть:
$(document).ready(function () {
var win;
$('#playButton').click(function () {
win = window.open('Player.html',
"popupWindow",
"width=265,height=360,scrollbars=yes");
$(this).attr('class', 'active');
$('#stopButton').attr('class', 'none');
localStorage.setItem("player", win);
});
$('#stopButton').click(function () {
$(this).attr('class', 'active');
$('#playButton').attr('class', 'none');
win = localStorage.getItem("player");
win.close();
});
});
Следуя моему комментарию: измените код своей страницы на:
$(document).ready(function () {
$('#playButton').click(function () {
window.open('Player.html', "popupWindow", "width=265,height=360,scrollbars=yes");
$(this).attr('class', 'active');
$('#stopButton').attr('class', 'none');
});
$('#stopButton').click(function () {
$(this).attr('class', 'active');
$('#playButton').attr('class', 'none');
localStorage.setItem("player", false);
});
});
И добавьте это в свой всплывающий код:
setInterval(function(){
if(localStorage.getItem("player") == false)
window.close();
}, 1000);
SetInterval будет запускать внутреннюю анонимную функцию каждые 1000 мс, и она проверяет значение игрока и закрывается, если для него установлено значение false.