2010-11-15 69 views
5

我有一个脚本可以检测您是否是iPhone用户,并将其重定向到更友善的iPhone页面。在iPhone上查看完整网站,而不是移动版本

<script type="text/javascript"> 
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) 
    { 
     location.replace("http://domain.com/iphone/"); 
    } 
</script> 

这很好,但有一个问题。按照约定为用户提供查看完整网页的能力。但是,如果我链接到根,显然重定向将发送到移动版本!

如果点击从/iphone/链接的任何想法,他们可以去/并留在那里。

回答

0

查询字符串是要走的路(正如其他人所说的)。查看Facebook,如果您点击移动网站上的“完整网站”链接,它会重定向到www.facebook.com/login.php?m2w - m2w可能是MobileToWeb,这将阻止网站将用户重定向到移动网站。

+0

是的,已注意。但是,问题是所有其他锚都将链接到href =“/”。所以,除非使用cookie,否则维护状态的查询字符串不会起作用。它可以在第一个请求上工作,但不是当用户浏览另一个页面时,然后单击回家。他们会被提示再次转移到移动网站。 – Rya 2010-11-19 04:54:31

8

当用户到达时,确定他们的浏览器类型 - 移动或全部 - 并设置一个具有该值的cookie。使用此cookie值来决定要显示的网站的版本。如您所述,为移动用户提供“完整”网站的链接,但如果他们点击该链接,请运行快速脚本将cookie更新为“完整”值,然后将其重定向到完整网站。他们的cookie现在设置为整个网站,所以他们不会被弹回移动网站。

现在,如果cookie是一个问题,您可以使用类似PHP的设置会话值来保持会话的完整/移动状态,但这可能超出了原始问题的范围。

+0

你可以在不使用中间脚本的情况下做到这一点,通过查询字符串如“我想使用主站点= 1”(显然不如XD那么复杂)来设置cookie查询字符串在那里,如果cookie或查询字符串都不存在,则重定向。 – 2010-11-15 04:51:42

+0

,如果它们关闭了cookie,你可以将它设置在查询字符串中:'?preventMobileRedirect = true'或者其他东西 – Joel 2010-11-15 04:52:27

+0

@Kolink:这是真的。我在PHP中思考,而不是JavaScript,但它可以用任何方式。尽管如此,我会修改答案,这更符合原始问题的精神。 – 2010-11-15 04:53:29

相关问题