Javascript 检测平板电脑或桌面用户

Javascript 检测平板电脑或桌面用户,javascript,html,css,ipad,jsp,Javascript,Html,Css,Ipad,Jsp,我计划为台式机和平板电脑用户提供完全独立的布局/设计。我的应用程序是基于Java的。 我的问题是,; 1.检测请求是来自台式机还是平板电脑(iPad/Xoom等)的最佳方法是什么 2.这可以在服务器端而不是通过JS用户代理字符串处理吗 重定向的一个活生生的例子是,如果一个人试图访问雅虎。i、 e.如果请求来自桌面浏览器,我们将被重定向到www.yahoo.com,而如果请求来自iPad等平板设备,我们将被重定向到www.yahoo.com/tablet 我正计划以雅虎为例。不知道他们是如何实施的

我计划为台式机和平板电脑用户提供完全独立的布局/设计。我的应用程序是基于Java的。 我的问题是,; 1.检测请求是来自台式机还是平板电脑(iPad/Xoom等)的最佳方法是什么 2.这可以在服务器端而不是通过JS用户代理字符串处理吗

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

我知道你们中的一些人可能会想,我应该控制两个单独的CSS,比如desktop.CSS和table.CSS,并通过CSS媒体查询或JS用户代理进行检测。但问题是,这两款应用的布局/设计如此不同,以至于我无法仅通过CSS进行控制,这就是原因,我计划为我的web应用提供一个单独的平板电脑版本,并进行重定向

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


提前感谢您在这方面的帮助。

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

我必须处理几乎相同的问题,必须区分桌面和非桌面。我使用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。

我不明白:为什么不在服务器端使用“用户代理”?用户代理检测会让您更容易。除此之外,您可以检测屏幕宽度分辨率,但可能不是您想要的。我在许多地方读到,用户代理字符串有点不一致。因此,应该避免用于浏览器检测。也不确定它在服务器端如何工作。通常认为测试浏览器类型是不正确的。毕竟,你永远不知道接下来会发生什么。考虑能力测试。Modernizer库有一个完整的功能检测套件,可以告诉您当前浏览器可以支持哪些功能,不能支持哪些功能。使用媒体查询来检测屏幕大小,并使用响应式设计来处理它。如果设计“如此不同”,你是不是觉得自己在维护上很头疼?是的,没错……维护起来很难……但不幸的是,作为一名开发人员,我在设计上没有很好的发言权……我正在寻找支持两个独立设计的最佳方法……事实上,尽管我说的是设计,这将不仅仅是UI工作,而且在Java方面也是如此..我的华硕Zenbook Infinity有一个触摸屏,但不是平板电脑。。。遗憾的是,没有一个好的方法来做出这个决定。(见鬼,我从2002年起就有一台富士通笔记本电脑,它也有一个触摸屏…)