如果您打开如下窗口:
window.open ("url","winName","location=0,width=300,height=214");
如果winName
已经打开,则只需更改窗口中的网址即可。这没关系,但如果那个窗口在当前窗口后面,大多数用户都不会意识到这一点,并认为它只是没有打开。
如果窗口已经打开,有没有办法把它带到前面?
答案 0 :(得分:47)
更新:自Chrome(21+)以来,此功能无效。解决方法是关闭/重新打开。
window.open()方法返回表示新窗口的对象。你只需要window.focus():
var w = window.open ("url","winName","location=0,width=300,height=214");
w.focus();
或者简单地说:
window.open("url","winName","location=0,width=300,height=214").focus();
答案 1 :(得分:11)
建议使用任何形式的.focus()
的各种答案很可能 无法在所有浏览器中使用。
这个曾经在当天工作,但现在已经没有了,主要是因为浏览器正在积极阻止阴影广告网络将其弹出广告推向前台。
特别是在Mozilla Firefox中(取决于您的版本),默认情况下启用的配置设置会阻止其他窗口(例如弹出窗口)自行关注。
您可以在about:config
页面中找到此设置(谨慎行事!)
dom.disable_window_flip: true
如果我没记错的话,这个设置曾被称为〜“allow_raise_or_lower_windows *
其他浏览器 可以 实现类似的功能,但是如果其中一个主流浏览器默认阻止.focus()
的使用,那么它就没那么多了试图打电话。
因此,我看到的唯一解决方案是查看窗口是否存在,并且尚未关闭...如果关闭它,则加载所需的窗口。
function closePopupIfOpen(popupName){
if(typeof(window[popupName]) != 'undefined' && !window[popupName].closed){
window[popupName].close();
}
}
当打开你的弹出窗口时,如果它有可能已经打开(并隐藏在其他窗口后面),那么你可以在尝试打开弹出窗口之前调用此函数。
closePopupIfOpen('fooWin');
var fooWin = window.open('someURL', 'foo', '...features...');
当然,缺点是如果在该窗口中有任何“重要”(例如部分填写的表格),它将会丢失。
答案 2 :(得分:7)
更新:自Chrome(21+)以来,此功能无效。解决方法是关闭/重新打开。
要小心,因为当你打开一个新窗口时,开启窗口可能仍然有一些代码需要执行,也许这些代码中的一些代码使它成为焦点。您会看到新窗口如何在前面打开然后突然转到后面,因此,在这些情况下,设置超时以便稍后将焦点放在新窗口上是一个好主意。在opener窗口中执行javascript,你可以这样做:
setTimeout(function(){window.focus();},1000);
等待1000毫秒的数量,并窗口打开窗口的名称。 例如,您也可以在body onload的打开窗口中使用此代码。
答案 3 :(得分:3)
我通过添加
来解决这个问题onclick="myWin = window.open('','winName','location=0,width=300,height=214'); myWin.focus()"
到html元素(按钮),然后通过JS更改URL。
答案 4 :(得分:2)
window.focus()
应该可以解决问题。
答案 5 :(得分:0)
你可以使用jQuery:
myPopup = window.open(url, "Title","menubar=no, status=no, scrollbars=no, menubar=no, width=800, height=800");
$(myPopup).focus();
答案 6 :(得分:0)
先关上窗户,对我有用:
window.open('', 'mypopup').close();
setTimeout(function() {
window.open('', 'mypopup').focus();
}, 500);
答案 7 :(得分:0)
我遇到了同样的问题,花了很多时间来寻找解决方案,最终它可以通过以下方式起作用:
var singleWindow;
function openNewWindow(){
if(singleWindow){
singleWindow.close();
}
singleWindow = window.open ("url","winName","location=0,width=300,height=214");
}
希望这对您有帮助!