[英]set the focus of a popup window every time
我有两页 one.html 和 two.html
我正在使用以下代码打开一个新窗口
//here popup is a global variable
popup=window.open('two.html','two');
第一次弹出窗口成功打开并获得焦点,但如果我尝试再次打开它而不关闭已打开的弹出窗口,那么 two.html 不会第二次获得焦点。
注意:我已将弹出窗口的名称设置为“两个”
您可以使用下面使用的focus
功能来实现
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,'name','height=200,width=150');
if (window.focus) {newwindow.focus()}
if (!newwindow.closed) {newwindow.focus()}
return false;
}
// -->
</script>
focusedWindow = window.open('two.html','two').focus();
直接将 focus() 附加到 window.open 原型
我的经验解决方案始终有效:
setTimeout('detail.focus()', 1);
在打开后立即附加.focus()
并不总是有效,也不总是在没有 setTimeout 的情况下调用.focus()
。
我知道它很丑(我想现在摆脱它,几年后,没有成功),我不知道为什么和如何的确切原因,但它有效。
如果在调用该函数时检查弹出窗口是否已经打开,则可以在打开它之前关闭该弹出窗口。
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");
}
这将确保弹出窗口始终显示在顶部。
var win = window.open('two.html','two');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
检查您的 Firefox 2 设置
如果关闭“升高或降低窗口”设置,则会禁用 window.focus() 方法。
我为自己找到了一个有效的答案。 在弹窗正文的 html 中,添加到正文标记 onload="this.window.focus()"。 即使您最小化窗口,它也会从前面和中间弹出。 确保并在执行脚本中命名窗口 window.open('url','some name','vars'); 希望这对你有帮助!
不幸的是,一些现代浏览器仍然不支持聚焦选项卡,例如,请参阅此 Firefox 错误条目。
但是,以下代码对我来说效果很好。 作为一种解决方法,如果无法聚焦,它会重新打开窗口/选项卡:
var win = window.open("two.html", "two")
win.focus();
setTimeout(function() {
if(document.hasFocus()) {
win.close();
window.open("two.html", "two")
}
}, 1);
在第一行中,它打开窗口并尝试使用第二行将其聚焦。 如果名称为two
的窗口已经存在,则不会打开新窗口/选项卡,但会重复使用它。
现在的技巧是,我们使用document.hasFocus()
检查当前窗口是否仍然具有焦点。 如果是这样,我们关闭窗口并重新打开它。 这仅适用于不支持聚焦要直接重用的选项卡的浏览器。 目前,FF 和 IE/MS Edge 就是这种情况。 铬效果很好。
然而,直接在使用window.open
, document.hasFocus()
总是返回 true (如此说,也在 Chrome 中)。 解决方法是在一毫秒后使用setTimeout
。
只需将 .focus() 添加到 window.open 行window.open('two.html','two').focus()
我确实遇到了同样的问题,这似乎在 Firefox 和 Chromium 网络浏览器中都有效。 在我的网站thaiiceland.com 中,我注意到如果弹出窗口是打开的,焦点不会放在弹出窗口上,当您单击该链接时,您会感觉没有任何反应。 所以我搜索并尝试在 window.open 行的末尾添加 .focus() 之后它就可以工作了。
<a href="currency.html" onclick="javascript:void window.open('currency.html','thaiice02','width=900,height=560,scrollbars=1,resizable=1,top=80,left=150').focus();return false;">Curency converter - แปลงสกุลเงิน</a>
setTimeout(function () {
window.open('PageName', '', 'height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50');
}, 100);
-> 此代码用于将焦点放在新打开的窗口上。 -> 把它放在javascript.('setTimeout 是javascript 的内置函数') -> 很多时候,当弹出窗口打开时,它会跑到旧窗口的后面,所以上面对新窗口的焦点非常有用。
这是一个单行解决方案,使用焦点在你的弹出变量上:
popup=window.open('two.html','two');
popup.focus();
即使它没有关闭,这也将始终打开您的弹出窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.