Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以检测iOS safari,同时过滤掉iOS Chrome、Firefox和其他浏览器?_Javascript_Ios - Fatal编程技术网

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

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

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

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

使用
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
。一个很好的例子是新的HTML5
audio
元素。基于此,我们可以看出它在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浏览器的帧速率非常低。