让我解释一下我的情况。我的页脚有一对播放/停止 CSS 按钮。我不想使用框架。当我按当前页面(第 1 页)上的“播放”时,会打开一个弹出窗口,并且 jplayer
开始播放音乐。当我按下关闭按钮时,由于我保留了初始打开时的窗口值,因此窗口会关闭。
现在,这是我的问题:假设用户移动到主站点上的另一个页面(第 2 页) - 弹出窗口仍在播放(这不是问题,这就是我的意图)。但我希望用户能够按第 2 页上的 stop 并终止第 1 页中创建的窗口。
我尝试使用 HTML5 本地存储,但它不起作用 - 奇怪的是:存储在 HTML5 存储中的对象是 of 类型窗口 - 所以它被存储。好像还是无法关闭。
有没有人曾经这样做过或者知道有什么方法可以解决它?这是我的代码(不起作用):
$(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,则会自行关闭。
关于Javascript - 在一个页面上打开窗口,然后在另一页面上关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23457642/