判断机型是安卓还是ios

迈不过友情╰ 2022-11-10 05:50 306阅读 0赞

判断机型是安卓还是ios

  1. <div id="btn">
  2. <a onclick="detect" id="a"><button>打开app</button></a>
  3. </div>
  4. <script>
  5. var a = document.getElementById("a")
  6. // 1、 识别手机类型
  7. var u = navigator.userAgent
  8. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1
  9. //android终端
  10. var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
  11. //ios终端
  12. if (isAndroid) {
  13. a.href = "bb";
  14. } else {
  15. a.href = "aa";
  16. }
  17. //要求如果是安卓直接下载apk如果是苹果则先跳到苹果商城在下载
  18. </script>

今天公司要求判断不同的机型挑战不同的链接,由于平时关注的是业务的实现,很少关注终端的问题,因此也有一些方法基本忘完了,写下博客加深印象

navigator.userAgent获取浏览器信息(类型及系统)

这是我浏览器的信息

  1. // 各主流浏览器
  2. function getBrowser() {
  3. //获取各个浏览器信息 navigator.userAgent
  4. var u = navigator.userAgent;
  5. var bws = [{
  6. name: 'sgssapp',
  7. it: /sogousearch/i.test(u)
  8. }, {
  9. name: 'wechat',
  10. it: /MicroMessenger/i.test(u)
  11. }, {
  12. name: 'weibo', //微博
  13. it: !!u.match(/Weibo/i)
  14. }, {
  15. name: 'uc', //uc
  16. it: !!u.match(/UCBrowser/i) || u.indexOf(' UBrowser') > -1
  17. }, {
  18. name: 'sogou',//搜狗
  19. it: u.indexOf('MetaSr') > -1 || u.indexOf('Sogou') > -1
  20. }, {
  21. name: 'xiaomi', //小米
  22. it: u.indexOf('MiuiBrowser') > -1
  23. }, {
  24. name: 'baidu',//百度
  25. it: u.indexOf('Baidu') > -1 || u.indexOf('BIDUBrowser') > -1
  26. }, {
  27. name: '360', //360
  28. it: u.indexOf('360EE') > -1 || u.indexOf('360SE') > -1
  29. }, {
  30. name: '2345',//2345
  31. it: u.indexOf('2345Explorer') > -1
  32. }, {
  33. name: 'edge',
  34. it: u.indexOf('Edge') > -1
  35. }, {
  36. name: 'ie11',//ie11版本
  37. it: u.indexOf('Trident') > -1 && u.indexOf('rv:11.0') > -1
  38. }, {
  39. name: 'ie', //ie
  40. it: u.indexOf('compatible') > -1 && u.indexOf('MSIE') > -1
  41. }, {
  42. name: 'firefox', //火狐
  43. it: u.indexOf('Firefox') > -1
  44. }, {
  45. name: 'safari',
  46. it: u.indexOf('Safari') > -1 && u.indexOf('Chrome') === -1
  47. }, {
  48. name: 'qqbrowser',
  49. it: u.indexOf('MQQBrowser') > -1 && u.indexOf(' QQ') === -1
  50. }, {
  51. name: 'qq',
  52. it: u.indexOf('QQ') > -1
  53. }, {
  54. name: 'chrome',//谷歌
  55. it: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1
  56. }, {
  57. name: 'opera',//欧朋
  58. it: u.indexOf('Opera') > -1 || u.indexOf('OPR') > -1
  59. }];
  60. //如果是上面的浏览器就返回他的名字否则返回other
  61. for (var i = 0; i < bws.length; i++) {
  62. if (bws[i].it) {
  63. return bws[i].name;
  64. }
  65. }
  66. return 'other';
  67. }
  68. // 系统区分
  69. function getOS() {
  70. var u = navigator.userAgent;
  71. //match方法匹配,常用于正则
  72. if (!!u.match(/compatible/i) || u.match(/Windows/i)) {
  73. return 'windows';
  74. } else if (!!u.match(/Macintosh/i) || u.match(/MacIntel/i)) {
  75. return 'macOS';
  76. } else if (!!u.match(/iphone/i) || u.match(/Ipad/i)) {
  77. return 'ios';
  78. } else if (!!u.match(/android/i)) {
  79. return 'android';
  80. } else {
  81. return 'other';
  82. }
  83. }

下面来说下区分不同浏览器版本打开不同页面

首先要了解下面代码之前必须了解什么是edge,与ie有什么区别
不想去看的童鞋这里我简单提一句

,Edge浏览器和IE浏览器是两个不同的浏览器,Edge浏览器是随着Win10系统发布的,虽然Win10系统内依旧保留了ie浏览器,但系统默认浏览器已经是Edge了,而不是IE浏览器,
由于Edge浏览器抛弃了过往的包袱,所以Edge浏览器开发代码更为精简和优化,所带来的好处就是速度的提升和更加安全,Edge浏览器内核是使用微软全新开发的MSHTML渲染引擎,与IE浏览器完全不同,Edge浏览器要比IE11浏览器速度快两倍多。
除了速度和安全的改变之外,Edge浏览器将支持扩展插件,这是IE浏览器所不具备的,与Chrome和火狐扩展程序一样,Edge扩展程序必须利用HTML和JavaScript开发。
从实际的评测数据来看,Edge浏览器性能面对IE11是完胜,在Octane 2.0 JavaScript Benchmark这个项目上微软Edge领先幅度超过了50%!Kraken JavaScript Benchmark这个项目的优势也将近50%,无论在速度、性能、安全上,Edge浏览器都要比IE浏览器强大很多。

  1. <script src="js/jquery-1.8.3.min.js" charset="utf-8"></script>
  2. <script>
  3. $(document).ready(function() {
  4. var num = IEVersion()
  5. //如果版本小于9则直接打开本页面显示使用高版本如果版本小于9则应打开live.html 就直接把打包好的文件名修改为live.html
  6. $('#text').hide()
  7. if (num > 9) {
  8. window.location.href = "live.html"
  9. } else {
  10. $('#text').show()
  11. }
  12. });
  13. function IEVersion() {
  14. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  15. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
  16. var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
  17. var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;//判断内核
  18. if (isIE) {
  19. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  20. reIE.test(userAgent);
  21. var fIEVersion = parseFloat(RegExp["$1"]);
  22. if (fIEVersion == 7) {
  23. return 7;
  24. } else if (fIEVersion == 8) {
  25. return 8;
  26. } else if (fIEVersion == 9) {
  27. return 9;
  28. } else if (fIEVersion == 10) {
  29. return 10;
  30. } else {
  31. return 6; //IE版本<=7
  32. }
  33. } else if (isEdge) {
  34. return 999; //edge
  35. } else if (isIE11) {
  36. return 11; //IE11
  37. } else {
  38. return 99; //不是ie浏览器
  39. }
  40. }
  41. </script>
  42. </head>
  43. <body>
  44. <div style="text-align: center; padding-top: 50px;" id="text">当前浏览器版本太低,请升级到IE10以上或用别的浏览器打开!(建议使用谷歌或者火狐浏览器)</div>
  45. </body>

上面这段代码是判断兼容性的,如果你开发的项目不支持ie7以下的建议使用该代码,如果支持直接无视把

总结:由于平时不多看基础知识,导致曾经遇到过的判断系统信息都觉得麻烦,还是多看看底层原理把

发表评论

表情:
评论列表 (有 0 条评论,306人围观)

还没有评论,来说两句吧...

相关阅读