Javascript 每次设置弹出窗口的焦点
我有两个页面,分别是one.html和two.html 我正在使用以下代码打开一个新窗口Javascript 每次设置弹出窗口的焦点,javascript,popup,Javascript,Popup,我有两个页面,分别是one.html和two.html 我正在使用以下代码打开一个新窗口 //here popup is a global variable popup=window.open('two.html','two'); 这是第一次成功打开弹出窗口并获得焦点,但是 如果我试图在不关闭已打开的弹出窗口的情况下再次打开它,那么two.html将不会第二次获得焦点 注意:我已将弹出窗口的名称设置为“两个”您可以使用下面使用的focus功能来实现 <script language="j
//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>
如果在调用函数时检查弹出窗口是否已打开,则可以在打开前关闭弹出窗口
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");
}
这将确保弹出窗口始终显示在顶部
focusedWindow = window.open('two.html','two').focus();
直接将焦点()附加到窗口。打开原型检查Firefox 2的设置
这将禁用window.focus()方法 我的经验性解决方案始终有效:
setTimeout('detail.focus()', 1);
在打开后立即追加.focus()
并不总是有效,在没有设置超时的情况下调用.focus()
我知道它很难看(几年后,我现在就想把它扔掉,但没有成功),我也不知道确切的原因和方法,但它是有效的
setTimeout(function () {
window.open('PageName', '', 'height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50');
}, 100);
<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>
->此代码用于将焦点放在新打开的窗口上。
->将其放入javascript中。('setTimeout是javascript的内置函数')
->很多情况下,当弹出窗口打开时,它将位于旧窗口的后面,因此上述内容对于新窗口的聚焦非常有用。这是一种单行解决方案,请在弹出窗口上使用聚焦:
popup=window.open('two.html','two');
popup.focus();
这将始终打开您的弹出窗口,即使它未关闭。我为自己找到了一个可行的答案。在弹出正文的html中,添加到正文标记onload=“this.window.focus()”。即使最小化窗口,它也会从前面和中间弹出。确保并在执行脚本窗口中命名窗口;希望这对你有帮助 不幸的是,一些现代浏览器仍然不支持聚焦选项卡,例如,请参见 但是,下面的代码对我来说运行良好。作为一种解决方法,如果无法聚焦,它将重新打开窗口/选项卡:
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中也是如此)。解决方法是在一毫秒后使用设置超时。只需将.focus()添加到window.open行即可
window.open('two.html','two').focus()
我也有同样的问题,这似乎在Firefox和ChromiumWeb浏览器中都有效。
在我的网站上,我注意到,如果弹出窗口是打开的,焦点就不会出现在弹出窗口上,当你点击该链接时,你会感觉什么都没有发生。所以我搜索并尝试在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>
不确定是否可以完成此操作。打开一个新窗口怎么样?我只想打开一个新窗口一次,而不是每次都接受ans,如果它对我有效的话you@hunt:也不是谷歌浏览器。以这种方式聚焦窗口是不兼容跨浏览器的。它是“兼容”的,因为它不会损害任何尝试,但Firefox、Chrome和Safari不会遵守要求。Firefox可以由用户配置为允许focus()
这样的请求工作,但我认为Chrome和Safari总是忽略它。没有办法强迫那些浏览器注意。(事实上Safari对此非常认真:)在chrome中使用window.open('two.html','two')和不使用焦点不会有什么区别,因为它是在网络选项卡中打开的,而不是在窗口中打开的。这个代码将关闭我以前打开的窗口,然后再打开另一个窗口。我不想结束我以前的工作window@hunt:正如我在评论中所说,焦点方法在弹出窗口的跨浏览器中不起作用。我很确定没有其他方法可以重新调整窗口的焦点。您需要使用空对象初始化弹出变量,此解决方案才能正常工作。欢迎使用堆栈溢出!与其只发布一段代码,不如解释一下为什么这段代码可以解决这个问题。没有解释,这不是答案。我通过执行setTimeout(function(){window.open(…)},1)修复了我的firefox问题。据我所知,setTimeout将在当前脚本的最后一行完成执行后触发它的脚本,但它在多线程脚本中不起作用,因为定时脚本将按时运行…简单的解决方案。。。它可以工作默认情况下打开的窗口是聚焦的,不需要聚焦。这种方法对我有效,在Chrome48、FF42和IE11中测试过。对我无效。它在我的第一个选项卡中打开“two.html”,我在这里调用此代码。是的,我更改了窗口的var名称。我可以通过稍后通过setTimeout调用第二行来修复此行为,但是它也没有将主体集中在边缘。