0

由于这里解释太长的原因,如果访问者是使用 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");
        }
4

1 回答 1

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 和私有模式下遇到了问题(在私有模式下不存储任何内容)。

于 2013-08-07T15:03:30.740 回答