【问题标题】:Check if tab is already open on mobile device?检查标签是否已在移动设备上打开?
【发布时间】:2014-11-20 17:22:08
【问题描述】:

我的网页上有一个按钮,如果我的访问者来自移动设备,它会打开一个新标签。

代码:

if (navigator.userAgent.match(/(iPhone|iPod|iPad|BlackBerry|Android|IEMobile)/)) {
    window.open(the_URL);
}

我如何检查访问者是否已经通过此链接获得了打开的选项卡并将访问者带回打开的选项卡?

意义;我不想每次访问者点击此链接时都打开一个新标签。

有什么想法可以做到这一点吗?

更新

我在 Safari(桌面)中得到了这个工作

var newWin;

    if(newWin) {
        try {
            newWin.focus();                 
        }catch(e) {
            newWin = window.open(the_URL);
        }
    } else {
        newWin = window.open(the_URL);              
    }

但是它没有切换到 iOS Safari 上的其他标签。..

更新 2

尝试先关闭窗口,然后再重新打开。但是.close 似乎不起作用

    if(newWin) {
        setTimeout(newWin.close, 1000);
        try {
            newWin.close();
            newWin.focus();
        }catch(e) {
            newWin = window.open(the_URL);
        }
    } else {
        newWin = window.open(the_URL);              
    }

【问题讨论】:

  • 好问题,但我不认为你可以。能够从 Javascript 查询打开的标签可能意味着隐私/安全问题。

标签: javascript


【解决方案1】:

您是否尝试过使用窗口名称属性?

来自 MDN:

strWindowName

新窗口的字符串名称。名字可以用 使用目标属性作为链接和表单的目标 或元素。名称不应包含任何空格 人物。请注意,strWindowName 没有指定 新窗口。

所以修改你的代码如下

if (navigator.userAgent.match(/(iPhone|iPod|iPad|BlackBerry|Android|IEMobile)/)) {
    window.open(the_URL, 'newWindowName');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多