Javascript - открыть окно на одной странице, затем закрыть его на другой

0

Позвольте мне объяснить мой сценарий. У меня есть кнопка для воспроизведения/остановки кнопок 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();
    });                                 
});
  • 0
    Я думаю, что вы можете только закрыть всплывающее окно из всплывающего окна или окна, которое его открыло. Как насчет установки переменной в локальном хранилище со страницы 2, которую всплывающее окно просматривает каждую секунду или около того, а затем закрывается при изменении?
  • 0
    Звучит как хорошая идея :) Как бы я поступил с этим, хотя, я запутался ... Извините, JavaScript не моя сильная сторона! Я предполагаю, что вы имеете в виду сохранить значение переменной в localstorage, которое может быть изменено и постоянно отслеживается всплывающим окном? Чтобы при изменении страницы всплывающее окно прекращалось?
Теги:

1 ответ

1
Лучший ответ

Следуя моему комментарию: измените код своей страницы на:

$(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.

  • 0
    Я бы дал тебе три больших пальца, если бы мог !! Я был 3/4 пути туда, прежде чем вы опубликовали это. Я собирался начать искать способ многопоточности / мониторинга, а затем ваш интервал пришел :)
  • 0
    Всегда пожалуйста. Хотя я не проверял это, поэтому, если возникнут проблемы, не стесняйтесь комментировать их здесь
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню