Javascript 有没有一种方法可以检测iOS safari,同时过滤掉iOS Chrome、Firefox和其他浏览器?
因此,对于那些在iOS网络应用程序上工作的人来说,他们可能知道,由于苹果的政策,Chrome和iOS上的其他移动浏览器使用的是非常古老的javascript引擎。这就是为什么我们需要为Chrome和其他iOS版的none safari浏览器禁用一些渲染 我一直在读,没有有用的答案。以下是我的一些方法(失败): 使用Javascript 有没有一种方法可以检测iOS safari,同时过滤掉iOS Chrome、Firefox和其他浏览器?,javascript,ios,Javascript,Ios,因此,对于那些在iOS网络应用程序上工作的人来说,他们可能知道,由于苹果的政策,Chrome和iOS上的其他移动浏览器使用的是非常古老的javascript引擎。这就是为什么我们需要为Chrome和其他iOS版的none safari浏览器禁用一些渲染 我一直在读,没有有用的答案。以下是我的一些方法(失败): 使用is|iOS=navigator.userAgent.match(/(iPad | iPhone | iPod)/g)检测浏览器是否在iOS上。然后使用: is\u FF=naviga
is|iOS=navigator.userAgent.match(/(iPad | iPhone | iPod)/g)
检测浏览器是否在iOS上。然后使用:
is\u FF=navigator.userAgent.match(/(firefox)/g)
和is\u Chrome=navigator.userAgent.match(/(Chrome)/g)
杀掉那些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
要简单得多。我是否可以建议基于特性而不是userAgent
进行过滤?例如:if(window.localStorage)…
@blex我意识到所有浏览器都与iOS safari共享相同的用户代理字符串。因此,我认为该方法应该运行一个只有Safari才能运行的javascript函数,然后确定浏览器是否为Safari。@KJPrice请解释更多。这似乎是正确的解决方案。谢谢。这绝对是个好主意!我尝试使用window.localStorage
作为检测工具,但不幸的是,Safari和Chrome都返回了true
。那么localStorage
就适用于这些浏览器了。你在这里说的“我们需要禁用Chrome的一些渲染”,你需要禁用什么?在我的例子中,我创建了一个javascript渲染引擎,可以直接在页面上运行视频作为背景(而不是调用视频播放器),但非Safari浏览器的帧速率非常低。