2012-09-06 96 views
3

我正在開發一個響應站點,並且當用戶在移動設備上瀏覽時,我被要求將我們網站上的任何免費電話號碼替換爲固定電話號碼。使用Modernizr庫(或任何其他庫)檢測用戶是否在移動設備上的最可靠方法是什麼?使用Modernizr檢測移動設備的最可靠方法是什麼?

我知道Modernizr.touch和Modernizr.geolocation。當兩者合併在一個if(Modernizr.touch && Modernizr.geolocation)聲明中時,它們是您是否在移動設備上的一個很好的指標,但iPad會使這兩個屬性都爲真。我不願意測試設備的尺寸,因爲移動設備越來越大!

有沒有人解決過這個問題?

+0

嚴格地說,你無法確定。即使是用戶代理字符串也是有問題的,特別是因爲公司每月推出大約一百萬個新手機型號。 (很多人無論如何都會叫iPad的移動設備:-) – Pointy

+0

我認爲Modernizr的嘗試明確阻止這種嗅探的,所以他們可能還沒有實現的方法。不過,我可以看到,在你的情況下,你有一個原因,所以可能你最好的選擇是使用'navigator.userAgent'。 –

+0

啊,我覺得特徵檢測方法可能是使用這樣的:http://stackoverflow.com/questions/5196833/android-device-phone-call-ability –

回答

3

通過使用Modernizr的API方法Modernizr.mq(str)

例子:

Modernizr.mq('only all and (max-width: 400px)') 
+2

謝謝。就像我說的,我不願意使用尺寸,因爲它們無法可靠地檢測移動設備,但我可能不得不這樣做。 – MrMisterMan

+6

我的手機打開它的側面報告640像素的寬度:-) – Pointy

+1

@準確地說我的觀點! :) – MrMisterMan

2

我使用這個PHP庫在我的網站:http://code.google.com/p/php-mobile-detect/

我推薦這在JavaScript庫,因爲它意味着移動設備上的處理要做的更少,並且您的網頁代碼更加清晰,沒有針對多個設備的條件語句。

警告(如果你想這樣稱呼)是你有兩個版本的網站要維護。儘管我在衡量維護帶有條件語句的網頁以決定顯示哪些內容時,我並不認爲這是一個問題。我的根目錄中有一個桌面文件夾和一個移動文件夾。

我只是使用isMobile方法,忽略了大部分其餘部分,但如果需要它可以用於過濾和定位特定設備類型。

E.g.用法:

// Include the mobile detection file. 
require('Mobile_Detect.php'); 

// Create new mobile detect object. 
$detect = new Mobile_Detect(); 
// Create new browser object 
$browser = new Browser(); 
// Check if the client is using a mobile device. 
$mobile = $detect->isMobile(); 

... 

if($mobile) { 
    //Load mobile site version 
    require('Mobile\\index.html'); 
} else { 
    //Load desktop site version 
    require('Desktop\\index.html'); 
} 

在你的情況下,JavaScript可能是更好的解決方案,如果它只是要改變,雖然數字。這個答案可能更適合那些希望開發移動友好的整個站點的人。

+0

謝謝。不幸的是,我正在開發前端的網站是.asp網站。也許我可以與開發人員交談,並詢問他們可以從後端做些什麼。 – MrMisterMan

+0

好吧,如果你願意的話,你可以嘗試一個ASP移動檢測瀏覽器腳本,並使我的解決方案能夠與ASP一起工作。一個示例腳本可以在這裏找到:http://mobiforge.com/developing/story/lightweight-device-detection-asp(我沒有經驗使用這個特殊的腳本) – Ren

+2

該庫看起來只是一堆混亂書面)模式以應用於用戶代理。 – Pointy

0

我知道我有點遲到了,但你說你正在使用ASP,browscap.ini根據檢查可用於ASP明確。

相關問題