由于这里解释的时间太长,如果访问者是使用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和私人模式下遇到了问题(在私人模式下不存储任何内容)。