proYang / outils

:rocket: 前端业务代码工具库
https://www.npmjs.com/package/outils
MIT License
2.61k stars 592 forks source link

关于getOS()返回系统类型不正确 #15

Closed Alienover closed 6 years ago

Alienover commented 6 years ago

我测试了一下,如果把返回pc端的语句放在返回移动端的语句前面,这样无论是在pc端还是移动端,这样都只会返回pc端的类型,因此需要把移动端的返回语句提前,这样,先检查移动端类型后,再检查pc端的类型,这样比较准确,下面是我改完之后的代码,亲测返回准确,希望采纳

function getOS() {
  var userAgent = 'navigator' in window && 'userAgent' in navigator && navigator.userAgent.toLowerCase() || '';
  var vendor = 'navigator' in window && 'vendor' in navigator && navigator.vendor.toLowerCase() || '';
  var appVersion = 'navigator' in window && 'appVersion' in navigator && navigator.appVersion.toLowerCase() || '';

  if (/iphone/i.test(userAgent) || /ipad/i.test(userAgent) || /ipod/i.test(userAgent)) return 'ios';
  if (/win/i.test(appVersion) && /phone/i.test(userAgent)) return 'WindowsPhone'; 
  //WindowsPhone一定要放在Android前面,否则使用WindowsPhone设备时,还是会返回Android
  if (/android/i.test(userAgent)) return 'Android';
  if (/mac/i.test(appVersion)) return 'MaxOSX';
  if (/win/i.test(appVersion)) return 'Windows';
  if (/linux/i.test(appVersion)) return 'Linux';
}
proYang commented 6 years ago

:rose: 感谢你的细心,已在最新版本中更正了这个错误。