2011-06-14 75 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

相關問題