【问题标题】:check if a browser tab is already open so I don't make extra tabs检查浏览器选项卡是否已经打开,所以我不会制作额外的选项卡
【发布时间】:2012-11-05 16:49:12
【问题描述】:

当用户将商品添加到我们的购物车时,它会在新标签页中打开我们的商店。奇怪的是不同的网站。

我想检查标签是否已经打开,然后用第二个项目重新填充它,而不是用更新的购物车打开另一个标签。

有没有办法用js检查这个?我想我可以跟踪我们打开了选项卡,但我不知道如何确认在将商品添加到购物车之间的时间内它没有关闭,而无需执行一些 ajax 请求 ping 两个页面等。这似乎有点矫枉过正。

那么,您如何简单地检查浏览器选项卡是否已打开?

编辑了一个解决方案: 第一:

var tab = window.open('http://google.com','MyTab');

然后:

if(tab) {
  var tab = window.open('http://yahoo.com','MyTab');
}

【问题讨论】:

  • 我认为您所要做的就是为窗口命名。
  • 如果标签已经打开var win = window.open('http://google.com', 'tab'); if (win) { win.focus(); },你也可以只设置焦点

标签: javascript tabs browser-tab


【解决方案1】:

window.open 有以下参数:var tab = window.open(url, name, specs, replace) 只要您使用相同的name,网址就会被加载到该窗口/选项卡中。

如果您想保留描述符/引用(上面的tab),那么一旦用户刷新页面,window.open 返回的那个引用就会丢失。

【讨论】:

  • 理想情况下,我可以将其保留在用户所在的页面之外,因为产品位于网站的不同页面上。
  • @BobB 如果这回答了您的问题,请单击左侧的勾号将其标记为此类。 =)
  • 它主要是回答它,所以我点击了它,但我仍在研究在打开选项卡的页面之外持续存在。我将尝试浏览器存储,但我不确定它是否可以存储该变量
【解决方案2】:

我认为你最好的选择可能是session storage / local storage,但它只适用于较新的浏览器。

【讨论】:

  • 如果我想在用户所在的页面之外持续存在,我认为你是对的。谢谢
【解决方案3】:

您只需要保存对已打开选项卡的引用,您可以将其与一些对您有意义的 id 相关联...然后当您需要再次重新打开它时,只需使用保存的引用从那里您可以访问您的window.opener 的父窗口或开启程序窗口。还要知道子窗口何时关闭,有一个默认的浏览器事件“beforeunload”,调用该事件时可以从父对象中的引用对象中删除窗口,因此您知道必须重新打开它而不仅仅是关注它。

【讨论】:

    【解决方案4】:

    我完成了每个步骤,并提出了一些要点。 我在IE上测试过。 如果您使用 (htp://www.google.com) 之类的 URL,它不会按预期工作,如果您使用您的域页面,它就可以工作。

    虽然它适用于 Firefox 和 chrome。

    以下示例不起作用:

    <script type="text/javascript">
        function myfunction1() {
            window.open('http://www.google.com', 'f');
        }
        function myfunction2() {
            window.open('http://www.yahoo.com', 'f');
        }
    </script>
    <body>
        <form id="form2" runat="server">
        <div>
            <a href="#" onclick='myfunction1();'>myfunction1</a> 
            <a href="#" onclick='myfunction2();'>myfunction2</a>
        </div>
        </form>
    </body>
    </html>
    

    以下示例有效:

    <script type="text/javascript">
            function myfunction1() {
                window.open('WebForm1.aspx', 'f');
            }
            function myfunction2() {
                window.open('WebForm2.aspx', 'f');
            }
    </script>
    <body>
        <form id="form1" runat="server">
        <div>
            <a href="#" onclick='myfunction1();'>myfunction1</a>
            <a href="#" onclick='myfunction2();'>myfunction2</a>
        </div>
        </form>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 2021-03-01
      • 1970-01-01
      • 2014-10-28
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      相关资源
      最近更新 更多