我有两页one.html和two.html
我正在使用以下代码打开一个新窗口
//here popup is a global variable
popup=window.open('two.html','two');
第一次弹出窗口成功打开并获得焦点但是 如果我尝试再次打开它而不关闭已打开的弹出窗口,那么two.html第二次没有获得焦点。
注意:我已将弹出窗口的名称设置为“两个”
答案 0 :(得分:12)
您可以使用下面使用的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>
答案 1 :(得分:8)
focusedWindow = window.open('two.html','two').focus();
直接将焦点()附加到window.open protoype
答案 2 :(得分:6)
我的经验解决方案始终有效:
setTimeout('detail.focus()', 1);
在打开后立即附加.focus()
并不总是有效,也不会在没有setTimeout的情况下调用.focus()
。
我知道这很难看(想要在几年之后摆脱它,没有成功),我不知道原因和方法的确切原因,但它确实有效。
答案 3 :(得分:2)
var win = window.open('two.html','two');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
答案 4 :(得分:1)
如果在调用函数时检查弹出窗口是否已打开,则可以在打开弹出窗口之前关闭弹出窗口。
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");
}
这将确保弹出窗口始终显示在顶部。
答案 5 :(得分:1)
检查
上的Firefox 2设置如果关闭“升高或降低窗口”设置,则 这会禁用window.focus()方法。
答案 6 :(得分:1)
不幸的是,一些现代浏览器仍然不支持对焦标签,例如,请参阅this Firefox bug entry。
但是,以下代码对我来说效果很好。作为一种解决方法,如果它无法聚焦,它会重新打开一个窗口/选项卡:
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的情况。 Chrome效果很好。
但是,在使用window.open
后,document.hasFocus()
会一直返回true(所以也称为Chrome)。解决方法是在一个ms之后使用setTimeout
。
答案 7 :(得分:1)
只需将.focus()添加到window.open行
window.open('two.html','two').focus()
我确实遇到了同样的问题,并且这似乎在Firefox和Chromium Web浏览器中均有效。 在我的网络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>
答案 8 :(得分:0)
setTimeout(function () {
window.open('PageName', '', 'height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50');
}, 100);
- &GT;此代码用于关注新打开的窗口。 - &GT;把它放在javascript中。('setTimeout是javascript的内置函数') - &GT;许多时候都会发生这样的情况:当打开弹出窗口时,它会落在旧窗口的后面,所以上面对于关注新窗口非常有用。
答案 9 :(得分:0)
这是一个单线解决方案,重点关注你的弹出窗口:
popup=window.open('two.html','two');
popup.focus();
即使未关闭,也会一直打开弹出窗口。
答案 10 :(得分:0)
我找到了适合自己的答案。在弹出框体的html中,添加到body标签onload =&#34; this.window.focus()&#34;。即使您最小化窗口,它也会向前和向中弹出。请务必在执行脚本window.open(&#39; url&#39;,&#39;某些名称&#39;,&#39; vars&#39;)中为该窗口命名;希望这能帮到你!