2011-08-30 66 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; 
    } 
} 
相关问题