关于区别浏览器型号

关于区别浏览器型号

var sBrowser, sUsrAg = navigator.userAgent;

// The order matters here, and this may report false positives for unlisted browsers.

if (sUsrAg.indexOf("Firefox") > -1) {
  sBrowser = "Mozilla Firefox";
  // "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
} else if (sUsrAg.indexOf("Opera") > -1 || sUsrAg.indexOf("OPR") > -1) {
  sBrowser = "Opera";
  //"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106"
} else if (sUsrAg.indexOf("Trident") > -1) {
  sBrowser = "Microsoft Internet Explorer";
  // "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko"
} else if (sUsrAg.indexOf("Edge") > -1) {
  sBrowser = "Microsoft Edge";
  // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"
} else if (sUsrAg.indexOf("Chrome") > -1) {
  sBrowser = "Google Chrome or Chromium";
  // "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36"
} else if (sUsrAg.indexOf("Safari") > -1) {
  sBrowser = "Apple Safari";
  // "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306"
} else {
  sBrowser = "unknown";
}

alert("当前浏览器为: " + sBrowser);

这个是 mdn 上的示例,但我不明白的是,如果我是 Chrome,使用 agent.indexOf("Safari") >-1 也判定为 true,实际上就是判断该字符串是否出现,但是这些字符都出现了啊,为什么可以判断是哪个浏览器呢?
图片描述

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,可以仔细看下每个浏览器的userAgent属性返回的值,先根据当前浏览器特有的字符来判断,不满足这些条件后,再判断是否是Chrome或者Safari浏览器。chrome浏览器返回的结果中既包含Chrome也包含Safari字符串,而Safari浏览器中并没有Chrome,所以先通过是否包含Chrome来判断是否是谷歌浏览器,通过Safari判断Safari浏览器

具体可以结合下图标注理解:

https://img1.sycdn.imooc.com//climg/6240339c0982e77618090777.jpg

祝学习愉快~

  • 知还 提问者 #1

    哦,我明白了,所以这个判断的顺序也是不能调换的对吧

    2022-03-27 18:48:44
  • 知还 提问者 #2

    我的意思是说,比如 Safari 和 Chrome 的判断顺序就不能调换对吧?

    2022-03-27 18:58:37
  • 好帮手慕慕子 回复 提问者 知还 #3

    是的,这俩的判断顺序不能调换,祝学习愉快~

    2022-03-28 09:23:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师