有没有一种方法可以在过滤掉iOS Chrome、Firefox和其他浏览器的同时检测iOS safari

Is there a way to detect iOS safari while filtering out iOS Chrome, Firefox and other browsers?

本文关键字:iOS Firefox Chrome 其他 safari 检测 浏览器 一种 方法 过滤 有没有      更新时间:2023-09-26

因此,对于那些在iOS网络应用程序上工作的人来说,可能知道由于苹果的政策,Chrome和iOS上的其他移动浏览器使用了一个非常古老的javascript引擎。这就是为什么我们需要禁用Chrome和其他iOS非safari浏览器的一些渲染。

我一直在读这个问题,没有任何有用的答案。以下是我的一些方法(失败):

使用is_iOS = navigator.userAgent.match(/(iPad|iPhone|iPod)/g)检测浏览器是否在iOS上。然后使用:

CCD_ 2和CCD_ 3

杀死那些firefox和chrome浏览器。

然后我意识到所有浏览器都与iOS safari共享相同的用户代理字符串。因此,我认为该方法应该运行一个只有Safari才能运行的javascript函数,然后确定浏览器是否为Safari。

因此,在选择在浏览器中使用的本机功能时,有两种思想流派。一种思想流派是像您在这里所做的那样检查userAgent,并使用/删除基于userAgent的功能。

检查userAgent的问题是它变得非常复杂。你已经遇到了一个有趣的问题,但当你发现ie8没有你想要的功能时,会发生什么?

一个更好的解决方案可能是检查该功能在其当前上下文中是否存在,而不必担心userAgent。一个很好的例子是新的HTML5audio元素。基于浏览器支持,我们可以看出它不存在于ie8或Safari<4.0.您可以检查功能是否存在,而不是检查浏览器是否与此处提到的浏览器匹配。正如我们所知,audio元素是Audio类的一个实例。我们可以简单地检查:

if (window.Audio) {
    //load and play the HTML5 audio element here
}

这比检查userAgent要简单得多。