检查是否有浏览器选项卡已经打开,所以我不作额外的标签(check if a browser tab

2019-07-03 21:35发布

当用户添加一个项目到我们的购物车就打开我们的商店在新标签。 不同的网站奇怪的。

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

有没有办法用js的检查呢? 我想我可以跟踪我们打开的标签,但我不知道怎样才能确认它是在时间将项目添加到购物车之间没有关闭而不做执行ping命令两个页面等。这似乎有点小题大做了一些Ajax请求。

所以,简单地,你如何检查浏览器选项卡已经打开?

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

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

然后:

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

Answer 1:

window.open具有以下参数: var tab = window.open(url, name, specs, replace)只要你使用相同name的URL将被加载到该窗口/标签。

如果你想保持描述符/引用( tab上),即window.open回报,一旦用户刷新页面,即基准丢失。



Answer 2:

我觉得你最好的选择可能是会话存储/本地存储 ,但它只能在新的浏览器。



Answer 3:

所有你需要的是保存在打开的选项卡的参考,你可以与一些ID,这将是有意义的,你......然后,当你需要再次打开它只需使用保存的参考涉及从那里你可以访问你的父母或开门红从窗口window.opener。 也知道什么时候关闭子窗口有一个默认的浏览器事件“beforeunload”那个叫可以从你的父母你的参考对象中删除的窗口,让你知道,你必须重新打开它时,不只是关注它。



Answer 4:

我通过每一步走了,我想出了一些分数。 我测试了它在IE浏览器。 和它的工作,如果你使用你的域名网页:如果您使用的网址类似(//www.google.com HTP)如预期它并没有奏效。

虽然它运作良好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>


文章来源: check if a browser tab is already open so I don't make extra tabs