如何使用window.open()关注先前打开的窗口

时间:2011-12-30 01:31:11

标签: javascript popup window

我想打开一个网站的弹出窗口,让它保持音乐播放器能够在用户浏览页面时播放无缝音乐。

我希望实现的是当用户首先点击“音乐”按钮时,会使用window.open(已完成)打开一个新的弹出窗口。第二部分是当用户导航到其他页面并再次点击“音乐”按钮时,已打开的窗口会收到焦点,但不会再次加载。

然而,发生的事情是,只要用户离开原始页面,浏览器就会忘记窗口已打开且焦点()停止工作。似乎focus()在用户停留在同一页面时起作用。

我发现了一个类似的问题,并尝试根据该问题实现我的代码:

JavaScript window.open only if the window does not already exist

以下是我到目前为止编写的代码:

$('a.music').click(function(){
        if(typeof(winRef) == 'undefined' || winRef.closed){
            winRef = window.open(this.href,'Music','left=20,top=20,width=500,height=500,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,titlebar=0');
        } else {
            winRef.focus();
        }
        return false;
    });

如果您想看一下,这是现场网站。 http://ilhaamproject.com/

如何引用已打开的窗口以使其适用于不同的页面加载?

1 个答案:

答案 0 :(得分:1)

修改:我回复了之前的回复。这可以做到。只需在打开的窗口上设置打开的窗口winRef即可。在弹出窗口中,输入以下代码:

setInterval(function()
{
    opener.winRef = window;
}, 500);

就是这样!

可能会有一些事件可以挂钩在开启窗口上,因此您不必使用setInterval,但我不确定。


原始答案:

你不能 - 卸载脚本页面后,JavaScript变量消失了。您可以这样做的唯一方法是不卸载打开弹出窗口的页面。您可以保持页面打开,但使用AJAX更改其内容。或者您可以在上周使用frames technique I suggested查找类似的问题。