让人们从移动站点恢复到桌面站点

8

我的网站将会重定向访问者到一个单独的移动站点,只要在网上阅读了一些指南,这似乎相当简单。

然而,我希望人们能够在移动站点上点击一个链接,然后跳转到桌面站点。

我看到的问题是,如果我链接回桌面站点,那么如果他们正在使用移动设备,它就会将其重定向回去?

我该如何解决这个问题?


3
您可以向我们展示一下您目前是如何从桌面站点重定向到移动站点的。 - Nelson
你为什么需要构建单独的移动和桌面站点呢?你可能应该看一下媒体查询:https://www.google.pl/search?q=media+queries - Michał Miszczyszyn
@RuFFCut - 问题已经解决。在您的服务器端编程语言中按照我的流程图(请参见下面的答案),实现移动重定向启示。 - Chris Bell
7个回答

7
你应该在服务器端而不是客户端执行这样的操作。问题在于你强迫移动用户(可能在连接不佳的情况下)先下载整个桌面站点(可能超过1MB),然后才能进行JavaScript重定向。
到那时,你的移动访问者可能已经失去耐心并离开了。
我在这里写了一个关于此过程的博客:http://www.9xb.com/blog-2012-08-6-common-pitfalls-when-deploying-a-mobile-site-and-how-they-can-be-avoided/ - 如果你跳到文章底部,你会看到一张映射整个流程的流程图。这种特定的方法使用cookies,但它可以被调整。这个流程图的好处是它是语言无关的 - 你可以用任何服务器端编程语言来开发它。
为了方便起见,我在下面包括了流程图(虽然我强烈建议你阅读这篇文章): http://www.9xb.com/wordpress/wp-content/uploads/2012/08/mobile-deployment-small.png 所有这些工作的替代方案是开发一个移动优先响应式站点。不了解你的情况,我就此结束 - 在每个场景中都不总是适用。

大家都来点赞这个问题。说真的,这是解决问题的正确答案。 - naugtur
网址和图片不再可用...(2012年的任何内容都已经消失了。) - Malachi

4

很遗憾,在window.location改变后,您无法检查referrer。但是您可以添加一个哈希标记(hashtag),然后检查它。

if(window.location.hash == "#stayHereDude"){
    // do nothing, or whatever
} else {
    window.location = "mobile/index.html";
}

然后,在移动页面上,您需要创建指向 /index.html#stayHereDude 的链接。


4
让移动重定向变成可选项(例如在桌面页面顶部放置一个链接),或者仅在初始入口点即mydomain.com上进行移动重定向。如果他们访问mydomain.com/index.html,则不会重定向。这样,您的“返回桌面”链接可以简单地是一个普通链接到index.html,从index_mobile.html或任何您为其移动体验发送的位置。
个人而言,我更希望布局足够流畅,适合任何浏览器,那么一开始就没有问题。请记住,现在有各种大小的平板电脑来混淆移动浏览水域。

1

在您的主页上进行移动重定向时,您需要检查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";
}

如果您只需要从单个页面重定向到移动站点,则此方法有效。


1
您可以使用Cookies、Session或本地存储,以便当用户点击“转到桌面站点”时设置一个值。
假设您将名称设置为“mobileOff”,并且当移动电话上的用户单击“转到桌面站点”时,将值设置为“1”或“true”。然后,在进行移动检查的任何地方,添加一个条件来检查用户的cookie/session/localStorage中的mobileOff是否设置为true。如果是,则绕过自动移动重定向,否则加载主桌面站点。

1

您应该结合用户代理方法和查询字符串来检测设备并实现此类功能。 假设您的链接是

site/default.aspx

如果有人访问这个页面,请检查用户代理并在响应中提供适当的站点,或者更好的是,如果检测到移动设备,则简单地重定向到 m.yourdomain.com/site/default.aspx。但是,如果有人访问页面 site/default.aspx?type=desktop,则覆盖检查用户代理的行为并呈现桌面站点。

绝不要先加载桌面站点,然后通过JavaScript重定向到移动站点。请在服务器端使用用户代理来实现此操作。


0

静态

/site/index.html
/site/mobile/index.html

然后你可以使用一系列的东西。

  1. Cookies
  2. 会话状态
  3. 用户登录和偏好设置(甚至是数据库保存)

如果你正在使用静态网站 - 随着JavaScript重定向和重复页面的增多,变得更加困难。发布你的代码并告诉我们你目前如何设置,我会更新我的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接