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

时间:2014-05-04 14:54:24

标签: javascript jquery html5

让我解释一下我的情景。我的页脚有一对播放/停止的CSS按钮。我不想使用框架。当我按当前页面上的播放(第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();
    });                                 
});

1 个答案:

答案 0 :(得分: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,它将自动关闭。