2013-01-21 99 views
11

可能重複:
What is the Best way to do Browser Detection in Javascript?可靠的方法來檢測桌面與移動瀏覽器

我想基本上做以下(在JavaScript或PHP):

if (desktop browser) { 
    do x; 
} 
else { // mobile browser 
    do not do x; 
} 

據瞭解,使用瀏覽器detection method is not recommended。更好的解決方案是使用capability testing。我的問題是,隨着移動瀏覽器變得更智能,更強大的桌面版本,從非桌面瀏覽器過濾桌面的理想獨家能力檢測?

我認爲扭轉條件檢查即if (mobile browser) {} else ...可能會證明是更有問題的,對吧?

+3

您似乎錯過了功能檢測的要點。關鍵是要檢測你關心的功能,而不是移動/桌面。 – Quentin

+1

謝謝你指出,@Quentin。希望這能夠澄清那些正在嘗試做同樣的事情的人。 – moey

+0

相關:http://stackoverflow.com/q/11381673 – moey

回答

13

什麼一點谷歌搜索止跌回升,從A Beautiful Site

var isMobile = { 
    Android: function() { 
     return navigator.userAgent.match(/Android/i); 
    }, 
    BlackBerry: function() { 
     return navigator.userAgent.match(/BlackBerry/i); 
    }, 
    iOS: function() { 
     return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
    }, 
    Opera: function() { 
     return navigator.userAgent.match(/Opera Mini/i); 
    }, 
    Windows: function() { 
     return navigator.userAgent.match(/IEMobile/i); 
    }, 
    any: function() { 
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 
    } 
}; 

if(isMobile.any()){ 
    // Mobile! 
} else { 
    // Not mobile 
} 

我不會說這個功能檢測是方式最好的用戶代理嗅探,這是可怕的實際。但是,如果您正在檢測功能以確定該設備是否被認爲是移動設備,那麼您將面臨一系列全新的問題。

你不能檢查pixel-ratio,因爲新的臺式電腦很可能是「視網膜」或超高清。您無法檢查device-orientation,因爲它不再是移動設備所特有的。您無法檢查(如果可以的話)陀螺儀,因爲某些筆記本電腦可能會返回值。

構建可在所有平臺上工作但不會嘗試將它們分開的網站!

+0

我剛剛添加了一個評論來檢查'window.orientation',但很明顯,當你指出它不再是移動設備專用的。主要是因爲Windows 8嗎? – moey

+0

主要是,是的。但重要的是,我們可能(並且幾乎肯定會)很快就會有一個市場充斥着定位感知設備。檢測*移動*是毫無意義的,應該被認爲是不好的做法。 –

+1

@Remi提供的概念有不同的實現:評估'navigator.userAgent'。我喜歡提醒您檢查一些以前是移動特定的內容,例如設備方向可能不再有效/很快就會生效。 – moey

0

我認爲你正在尋找在php中的get_browser()函數。

嘗試通過在browscap.ini文件中查找瀏覽器的信息來確定用戶瀏覽器的功能。

相關問題