11

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

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

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

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

用解决方案编辑:首先:

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

然后:

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

4 回答 4

14

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

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

于 2012-11-16T22:46:08.987 回答
1

我认为您最好的选择可能是会话存储/本地存储,但它仅适用于较新的浏览器。

于 2012-11-16T22:40:24.123 回答
0

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

于 2012-11-16T22:50:00.687 回答
0

我经历了每个步骤,并提出了一些观点。我在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>
于 2014-04-09T14:27:45.957 回答