【问题标题】:Avoiding duplicate browser tabs or windows (window.open())避免重复的浏览器选项卡或窗口 (window.open())
【发布时间】:2012-02-29 09:15:46
【问题描述】:

在 Javascript 中,我们可以使用 window.open() 打开一个新的浏览器窗口或选项卡。 但如果一个选项卡已经打开,它应该只突出显示。它不应该打开重复的标签。 该怎么做?

【问题讨论】:

标签: javascript window window.open


【解决方案1】:

window.open(strUrl, strWindowName[, strWindowFeatures]);second argument 是窗口名称。如果您指定该参数,则“_blank”以外的任何参数都将引用已打开的选项卡/窗口。

例如:

window.open('/about', 'newwindow');

window.open('/contact', 'newwindow');

将在已打开的窗口/选项卡中打开页面。

【讨论】:

  • 是的..我这样做了...它有效..但是如果它已经打开,有什么方法不会重新加载该页面?我只是想把重点放在...
  • 您可以尝试newwin = window.open(...')newwin.focus(); 它适用于弹出窗口,但不适用于Firefox 中的选项卡。在 IE 中,我认为它默认打开新窗口,所以它可以工作。
  • 我已经这样做了。它正在聚焦,但仍在重新加载已经存在的窗口。有什么办法可以避免吗?
  • 你可以这样做if (newwin != null) { newwin = window.open('...'); } else { newwin.focus(); }
【解决方案2】:

给窗口一个目标名称: http://www.javascript-coder.com/window-popup/javascript-window-open.phtml

如果已经存在,新的网址将在其中打开

【讨论】:

    【解决方案3】:

    确保每次都为 window.open() 提供相同的窗口名称! (第二个参数,不能为空)

    您需要管理从 window.open() 返回的窗口对象并检查它是否已关闭,请查看 https://developer.mozilla.org/en/DOM/windowclosed 属性。您必须有一个窗口到 url 列表,这将帮助您决定是使用 window.open() 打开一个新窗口(一个目前未打开的 url)还是使用 opensWindow.focus() (openedWindow是上一次调用 window.open()) 以将窗口显示在视图中所返回的对象。

    【讨论】:

    • 是的..我这样做了...它有效..但是如果它已经打开,有什么方法不会重新加载该页面?我只想专注于那个......
    【解决方案4】:

    Candide 的代码需要稍作修正。应检查 null 条件,而不是 "!="

    popwin.html 是您要在弹出窗口中打开的页面。我知道这已经回答了,只是发布以防以后有人想参考。

    主窗口代码:

    <script type='text/javascript'>
    var newwin;
    function popup(){
    
    if (newwin == null) 
        { 
        window.open('popwin.html', 'newwin'); 
        } 
        else 
        { 
        newwin.focus(); 
        }
    }
    
    </script>
    

    在同一页面的正文区域调用弹出窗口:

    <a href="#" onClick="popup();">Open Window</a>
    

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 2012-03-14
      • 2012-08-30
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多