将弹出窗口置于前台

7
在我的应用程序中,我有一个信息弹出窗口,当我选择某些选项时打开。
第一次使用它很好,弹出窗口在所有内容的前面高亮显示。
但是,当它失去焦点时,当用户转到其他窗口时,如果用户再次点击相同的选项,我希望弹出窗口再次显示在所有内容的前面。
我尝试了类似以下的东西:
<body onLoad="this.focus()">
window.focus();   
document.focus();  
this.focus();  

但是它对我不起作用。

我缺少什么?

1个回答

15

你应该维护打开的弹出窗口的引用并调用它的 focus 方法。

var win = window.open(url, name, args);
win.focus();

如果打开一个弹出窗口时,您给它一个名称,下一次再打开同名的弹出窗口时,它将使用相同的弹出窗口(如果尚未关闭),您只需将其聚焦即可。

您可以使用此简单函数来处理弹出窗口

function windowOpener(url, name, args) {

    if(typeof(popupWin) != "object" || popupWin.closed)  { 
        popupWin =  window.open(url, name, args); 
    } 
    else{ 
        popupWin.location.href = url; 
    }

    popupWin.focus(); 
 }

1
我正在进行测试,看起来是一个不错的解决方案,在Chrome和IE中运行良好,但在FF中表现奇怪。我不知道该如何向你解释,但当我打开弹出窗口(使用windowOpener)然后再打开另一个弹出窗口时,如果我点击拥有windowOpener的弹出窗口,他自己不会在所有窗口前置,这只发生在FF中。 - Ricardo Binns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接