检测用户是否在iPhone的Safari移动浏览器中导航

3
我正在尝试使用jquery / javascript检测用户是否在iphone的safari浏览器上浏览我的网站。
我能够使用用户代理字符串检测IOS环境。 /iphone/i.test(navigator.userAgent.toLowerCase()) 但这会检测到苹果Webkit环境,即设备上所有浏览器都相同。有人能提出不同的方法吗?
3个回答

6

更新:


尝试使用以下代码来检测 iPhone 上的 Safari 浏览器:

var isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);

它可以识别Safari 3.0+,并将其与Chrome区分开来。

JsFiddle


即使在 Chrome 中,它对我来说仍然是 isSafari。 - Ayu
你确定吗?我在Chrome 36版本中进行了测试,但是对我来说不起作用。但它确实可以在我iPhone 4s的Safari中显示提示框。 - urbz
我的朋友,这种方法可以检测到 iPhone 环境,并在 iPhone 上的所有浏览器中发出警报。我在我的 iPhone 5s 上的 Chrome 和 Opera 浏览器上也收到了警报。 - Mayank Tripathi
它将为iPhone中使用的所有浏览器发出警报。 - Mayank Tripathi
现已更新并测试通过。 - urbz
Yandex浏览器也匹配。其他的看起来还好。 - cenk ebret

2

由于其他答案没有包括检测 iPhone 的部分,因此需要加入这一部分。

var isIphone = /(iPhone)/i.test(navigator.userAgent);
var isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);

if(isIphone && isSafari){
    //do something
}

如果您想检测特定的iOS版本及以上版本,例如iOS 7.0及以上,则可以使用以下代码。它可以检测版本7-19的iOS(适用于即将推出的版本)。

var isIphone= /(iPhone)*(OS ([7-9]|1[0-9])_)/i.test(navigator.userAgent);  

0

var isFirefox = navigator.userAgent.indexOf("FxiOS") != -1;  
var isChrome = navigator.userAgent.indexOf("CriOS") != -1;  
var isEdge = navigator.userAgent.indexOf("EdgiOS") != -1;  
var isOpera = navigator.userAgent.indexOf("OPT") != -1;

if (!isFirefox && !isChrome && !isEdge && !isOpera){  
  console.log("Only display in Safari")  
} else {  
  console.log("Only display in Firefox/Chrome/Edge/Opera")  
}        

嗨,这个方法对我来说在iOS移动设备上仅适用于检测Safari浏览器。值FxiOs、CriOs等是我从userAgent值中获取的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接