如何使用javascript检测Firefox手机?

发布于 12-02 01:01 字数 605 浏览 1 评论 0原文

我使用以下代码来检测我的移动网站上使用的浏览器是否符合特定条件:

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 特定的代码。

I'm using the following code to detect whether the browser being used on my mobile site matches a certain crieteria:

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

but if I attempt to do this for Firefox / Mozilla, I can't get it to work. I've tried:

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

and

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

I visited whatismyuseragent.com and got the following:

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

Any idea how I properly detect this? I need to write some firefox specific code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

纸伞微斜2024-12-09 01:01:53

Firefox 的移动版本是 Fennec,因此只需搜索它即可:

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

The mobile version of Firefox is Fennec, so just search for that:

var is_Firefox = navigator.userAgent.toLowerCase().indexOf('fennec') > -1;
被翻牌2024-12-09 01:01:53

上述功能对我来说都不起作用,特别是 buriwoy 正在检测 android 或 firefox,他的这个版本的功能有效:

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;
   }
}

None of the above functions were working for me, specifically buriwoy was detecting either android or firefox, this version of his function works:

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;
   }
}
烟火散人牵绊2024-12-09 01:01:53

您可以从用户代理检查它是否包含 firefox 或 android,为此,您可能需要一些带有正则表达式的代码

you can check from user agent if it's contain firefox or android, for this maybe you need some code with regex

故事↓在人2024-12-09 01:01:53

这可以简单明了地检测 Android 上的 Firefox:

isFxAndroid = /^Linux a/.test(navigator.oscpu);

或者使用 startsWith 进行更现代的操作:

isFxAndroid = navigator.oscpu.startsWith("Linux a");

它是如何工作的:
if (navigator.oscpu) { /* I'm Firefox */ }
是众所周知的检测 Mozilla 浏览器(Firefox)的方法,其他浏览器返回 undefined .
根据 HTML 规范,Gecko 浏览器 (Firefox) 必须返回 navigator.oscpu 的字符串:
如果导航器兼容模式是 Gecko,则用户代理还必须支持以下部分接口
https://html.spec.whatwg.org/multipage/system-state.html#concept-navigator-compatibility-mode

Android 上的 Firefox 返回 navigator.oscpu 内容例如 Linux armv71Linux aarch64
Linux 桌面上的 Firefox 始终返回 Linux x86_64;该字符串被冻结多年(无论实际的 CPU 是多少)。
因此,您不会得到带有建议查询的桌面 Firefox。

您可以在此处测试浏览器对 navigator.oscpu 的返回值:
http ://jeka.info/test/navigator.html

This detects Firefox on Android plain and simple:

isFxAndroid = /^Linux a/.test(navigator.oscpu);

Or the same thing more modern with startsWith:

isFxAndroid = navigator.oscpu.startsWith("Linux a");

How it works:
if (navigator.oscpu) { /* I'm Firefox */ }
is a well known way to detect Mozilla browsers (Firefox), other browsers return undefined.
According to the HTML spec, Gecko browsers (Firefox) must return a string for navigator.oscpu:
If the navigator compatibility mode is Gecko, then the user agent must also support the following partial interface
https://html.spec.whatwg.org/multipage/system-state.html#concept-navigator-compatibility-mode

Firefox on Android returns fornavigator.oscpu something like Linux armv71 or Linux aarch64.
Firefox on Linux Desktop always returns Linux x86_64; this string is frozen for many years (regardless of the actual CPU).
So you get no Desktop Firefox with the proposed query.

You can test your browser's return value for navigator.oscpu here:
http://jeka.info/test/navigator.html

二货你真萌2024-12-09 01:01:53

Rion 的答案不起作用(至少不再起作用),因为 navigator.platform 不返回 Android,而是返回 Linux。

我写了一个似乎有效的函数:

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

我想也许有人会需要这个。

Rion's answer doesn't work (at least anymore), because navigator.platform doesn't return Android, it returns Linux.

I wrote a function which seems to work:

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

Thought maybe someone will need this.

埋葬我深情2024-12-09 01:01:52

您可以使用 navigator.userAgent 检测浏览器,使用 navigator.platform 检测当前平台。

检测 Firefox:

let is_firefox = navigator.userAgent.toLowerCase().includes('firefox');

检测 Android:

let is_android = navigator.platform.toLowerCase().includes("android");

检测两者:

if(is_firefox && is_android)
    //Do Work

我建议使用类似 modernizr 以避免浏览器检测并专注于功能检测。

You can use the navigator.userAgent to detect the browser and navigator.platform to detect the current platform.

To Detect Firefox:

let is_firefox = navigator.userAgent.toLowerCase().includes('firefox');

To Detect Android:

let is_android = navigator.platform.toLowerCase().includes("android");

To Detect Both:

if(is_firefox && is_android)
    //Do Work

I would recommend using something like modernizr to avoid browser detection and focus on feature detection.

桃酥萝莉2024-12-09 01:01:52
var isFirefox = /Android.+Firefox\//.test(navigator.userAgent);
var isFirefox = /Android.+Firefox\//.test(navigator.userAgent);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文