Javascript -在一个页面上打开窗口,然后在另一个页面上关闭它

Javascript - open window on one page, then close it on another

本文关键字:然后 另一个 开窗口 一个 Javascript      更新时间:2023-09-26

让我解释一下我的场景。我有一个播放/停止对CSS按钮在我的脚。我不想使用框架。当我在当前页面(第1页)上按下播放键时,一个弹出窗口打开,jplayer开始播放音乐。当我按下close时,由于我保存了初始打开时的窗口值,窗口关闭了。

现在,这是我的问题:假设用户移动到主站点的另一个页面(第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,它将关闭自己。

相关文章: