如果引荐来源不是我的域名,则javascript会重定向移动设备

时间:2013-08-07 14:50:13

标签: javascript mobile replace user-agent referrer

由于这里解释的原因太长,我想使用javascript将访问者从我的索引页重定向到我的移动子域,如果它们是某些使用userAgent的设备。

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

这是我想要实现的目标。


如果,引荐网址不是我自己的网址,则用户代理会匹配,然后重定向到移动子网域。


我很接近,却遗漏了一些东西。

    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");
        }

1 个答案:

答案 0 :(得分:1)

你的情况有点好笑,你有一个分号,你不应该。

引用者条件将被忽略,因为它刚刚与其他条件一起使用。将所有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");
        }

拥有一个链接是一个好主意,因为它表明你知道你永远不会再次猜测用户(和设备识别)100%。

正如mplungjan所说,依靠推荐人不是很强大。我建议你存储一些“会话”信息,注册用户打算在完整网站上查看。然后,这可以覆盖您的开关。

大多数移动浏览器都支持sessionStorage,您可以使用它来跟踪此情况(例如sessionStorage['site'] = 'full'),尽管我遇到过iOS和私有模式的问题(不会以私密模式存储任何内容)。