2011-06-14 101 views
1

我打算为桌面VS平板电脑用户设计一个完全独立的布局/设计。我的应用程序基于Java。 我的问题是; 1.什么是检测请求是否来自桌面或平板电脑(iPad/Xoom等)的最佳方法 2.可以在服务器端处理而不是通过JS用户代理字符串处理?检测平板电脑或桌面用户

重定向的一个活生生的例子是,如果有人试图访问雅虎。即如果请求来自桌面浏览器,我们将被重定向到www.yahoo.com,而如果请求来自iPad等平板设备,我们将被重定向到www.yahoo.com/tablet 我是计划沿着雅虎的例子。不知道他们是如何实施它。

我知道你们中的一些人可能会认为我应该控制2个单独的CSS,如desktop.css和tablet.css,并通过CSS媒体查询或JS用户代理进行检测。但关键是布局/设计在2之间是如此不同,以至于我只能通过CSS无法控制,这就是原因,我打算让我的web应用程序有一个单独的平板电脑版本并进行重定向。

请让我知道尽可能多的建议,你可以。

在此先感谢您的帮助。

+3

我不明白:为什么不在服务器端使用'user-agent'? – 2011-06-14 14:32:32

+0

用户代理检测将使您更容易。除此之外,你可以检测屏幕宽度分辨率,但可能不是你想要的。 – ngen 2011-06-14 14:34:02

+0

我在很多地方看到用户代理字符串是不一致的。所以它应该避免浏览器检测..也不知道它是如何工作在服务器端.. – testndtv 2011-06-14 14:41:31

回答

1

您必须检查HTTP请求中的用户代理字符串。基于此,您将能够识别该设备 - 前提是用户尚未更改从设备浏览器发送的用户代理字符串。

0

我不得不处理几乎相同的问题,不得不在桌面或非桌面之间进行区分。我使用JavaScript进行了客户端检测。我用我的解决方案RequireJS,这是我的模块:

define(function(){ 
    var isTouchDevice = function() {  return window.screenX === 0 && 'ontouchstart' in window || 'onmsgesturechange' in window; }; 
    var isDesktop = !isTouchDevice() ? true : false; 
    return isDesktop; 
}); 

我增加了可读性变量isDesktop。

+1

我的华硕Zenbook Infinity有一个触摸屏,但不是一个平板电脑......可悲的是没有真的是做出这个决定的好方法。 (嘿,我有一台从2002年开始的富士通笔记本电脑,也有触摸屏......) – McGuireV10 2014-05-20 15:11:00

相关问题