我的网站将会重定向访问者到一个单独的移动站点,只要在网上阅读了一些指南,这似乎相当简单。
然而,我希望人们能够在移动站点上点击一个链接,然后跳转到桌面站点。
我看到的问题是,如果我链接回桌面站点,那么如果他们正在使用移动设备,它就会将其重定向回去?
我该如何解决这个问题?
我的网站将会重定向访问者到一个单独的移动站点,只要在网上阅读了一些指南,这似乎相当简单。
然而,我希望人们能够在移动站点上点击一个链接,然后跳转到桌面站点。
我看到的问题是,如果我链接回桌面站点,那么如果他们正在使用移动设备,它就会将其重定向回去?
我该如何解决这个问题?
很遗憾,在window.location改变后,您无法检查referrer。但是您可以添加一个哈希标记(hashtag),然后检查它。
if(window.location.hash == "#stayHereDude"){
// do nothing, or whatever
} else {
window.location = "mobile/index.html";
}
然后,在移动页面上,您需要创建指向 /index.html#stayHereDude 的链接。
在您的主页上进行移动重定向时,您需要检查href中是否有标记它们来自移动站点的内容。在我的情况下,我使用了一个链接从移动站点到主页,并在其末尾添加了?m=0。例如:http://www.yoursite.com/?m=0
然后,在主页上重定向之前,请检查href中是否存在m=0。如果存在,请不要重定向;如果不存在,请重定向到移动站点。
if (window.location.href.match("m=0")) {
} else {
window.location = "http://www.yoursite.com/mobilesite";
}
如果您只需要从单个页面重定向到移动站点,则此方法有效。
您应该结合用户代理方法和查询字符串来检测设备并实现此类功能。 假设您的链接是
site/default.aspx
如果有人访问这个页面,请检查用户代理并在响应中提供适当的站点,或者更好的是,如果检测到移动设备,则简单地重定向到 m.yourdomain.com/site/default.aspx
。但是,如果有人访问页面 site/default.aspx?type=desktop,则覆盖检查用户代理的行为并呈现桌面站点。
绝不要先加载桌面站点,然后通过JavaScript重定向到移动站点。请在服务器端使用用户代理来实现此操作。
静态
/site/index.html
/site/mobile/index.html
然后你可以使用一系列的东西。
如果你正在使用静态网站 - 随着JavaScript重定向和重复页面的增多,变得更加困难。发布你的代码并告诉我们你目前如何设置,我会更新我的解决方案。