javascript重定向移动设备,如果referrer不是我的域



由于这里解释的时间太长,如果访问者是使用userAgent的特定设备,我想使用javascript将他们从我的索引页面重定向到我的移动子域。

我遇到的问题是,移动网站有一个"查看完整网站"链接,可以将您发送到索引页面。这将创建一个循环条件。

以下是我正在努力实现的目标。


如果引用的url不是我自己的域并且用户代理匹配,则重定向到移动子域。


我很接近,但错过了什么。

    if   (document.referrer != "mydomain.com" &&
            (navigator.userAgent.match(/iPhone/i)) ||
            (navigator.userAgent.match(/iPod/i)) ||
            (navigator.userAgent.match(/iPad/i)) ||
            (navigator.userAgent.match(/Googlebot-Mobile/i))); {
        location.replace("https://m.mydomain.com");
        }

您的条件有点有趣,并且在不应该使用的地方使用了分号。

referrer条件将被忽略,因为它与其他条件刚好或相同。把所有OR都放在括号里,它应该可以工作。

if   (document.referrer != "mydomain.com" &&
            ((navigator.userAgent.match(/iPhone/i)) ||
            (navigator.userAgent.match(/iPod/i)) ||
            (navigator.userAgent.match(/iPad/i)) ||
            (navigator.userAgent.match(/Googlebot-Mobile/i)))) {
        location.replace("https://m.mydomain.com");
        }

有一个链接是个好主意,因为它表明你意识到你永远无法百分之百地猜测用户(和设备识别)。

正如mplungjan所说,依赖推荐人不是很稳健。我建议你存储一些"会话"信息,注册用户在整个网站上查看的意图。这可以覆盖您的开关。

大多数移动浏览器都支持sessionStorage,您可以使用它来跟踪这一点(例如sessionStorage['site'] = 'full'),尽管我在iOS和私人模式下遇到了问题(在私人模式下不存储任何内容)。

相关内容

最新更新