Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次设置弹出窗口的焦点_Javascript_Popup - Fatal编程技术网

Javascript 每次设置弹出窗口的焦点

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

我有两个页面,分别是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>

如果在调用函数时检查弹出窗口是否已打开,则可以在打开前关闭弹出窗口

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的设置

  • 转到工具->选项->内容
  • 确保“启用JavaScript”已打开
  • 在“启用JavaScript”旁边,单击“高级”按钮
  • 确保框中有复选标记 [x] 升降窗
  • 如果“升起或降下车窗”设置已关闭,则
    这将禁用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调用第二行来修复此行为,但是它也没有将主体集中在边缘。