2011-08-30 58 views
8

我用下面的代碼來檢測是否正在使用的瀏覽器上我的移動網站一定crieteria匹配:如何檢測Firefox移動使用javascript

var isiPhone = navigator.userAgent.match(/iPhone/i) != null; 
if (isiPhone){ alert ('iphone'); 

,但如果我嘗試的Firefox做到這一點/ Mozilla,我無法實現它的工作。我已經試過:

var isFirefox = navigator.userAgent.match(/Mozilla/i != null); 

var isFirefox = navigator.userAgent.match(/Firefox/i != null); 

筆者走訪whatismyuseragent.com並得到如下:

Mozilla/5.0 (Android;Linux armv7l; rv6.0) Gecko/20110811 Gecko Firefox/6.0 Fennec/6.0 

任何想法如何我正確地檢測到這一點?我需要編寫一些Firefox特定的代碼。

+1

取決於你想要做什麼,你可能會考慮做功能檢測,而不是(http://ejohn.org/blog/future-proofing-javascript-libraries/)。另請參閱SO上的其他問題:http://stackoverflow.com/questions/1294586/browser-detection-versus-feature-detection – mbillard

回答

17

您可以使用navigator.userAgent來檢測瀏覽器,並使用navigator.platform來檢測當前平臺。

要檢測的Firefox:

var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; 

要檢測的Android:

var is_android = navigator.platform.toLowerCase().indexOf("android") > -1; 

同時檢測:

if(is_firefox && is_android) 
    //Do Work 

我會推薦使用類似modernizr以避免瀏覽器檢測並關注功能檢測。

+0

OP要求檢測移動版本。移動和非移動之間的差異將如何? – JaredPar

+0

這裏也應該是固定的平臺檢測。 –

+0

嗅探「firefox」幾乎肯定是錯誤的事情。您可能想要尋找「gecko /」。可悲的是,尋找「壁虎」不,因爲基於WebKit的瀏覽器通常包括字符串中的UA字符串... –

2

火狐移動版本的Fennec是,所以只是搜索的是:

var is_Firefox = navigator.userAgent.toLowerCase().indexOf('fennec') > -1; 
1

var isFirefox = /Android.+Firefox\//.test(navigator.userAgent);

-1

裏翁的回答不工作(至少再),因爲navigator.platform不返回Android,它返回Linux。

我寫這似乎工作的函數:

function detectAndroidFirefox() { 
    var agent = navigator.userAgent.toLowerCase(); 
    return (agent.indexOf('firefox') + agent.indexOf("android")) >= 0; 
} 

想也許有人會需要這個。

0

無上述功能都爲我工作,特別是buriwoy檢測Android或火狐,這個版本他功能的工作原理:

function detectAndroidFirefox() { 
    var agent = navigator.userAgent.toLowerCase(); 
    if(agent.indexOf('firefox') >= 0){ 
    if(agent.indexOf("android") >= 0){ 
     return true;  
    } else{ 
     return false; 
    } 
    } else{ 
    return false; 
    } 
} 
相關問題