当前位置:   article > 正文

如何用js检测浏览器类型_js判断浏览器

js判断浏览器

这个需求在前端开发当中是很常见的,大家都知道我们写的js或css在浏览器中是有兼容问题的,当下虽然大家可能不用感受的IE6带来的痛苦(别问我为什么是痛苦),但是你负责的项目本身就是政府、医院之类的项目,这个时候还是得受兼容问题的困扰。

解决方案一:老老实实的在写html、css和js的时候就考虑兼容的问题,边写边测试,完成后自然就是兼容的了。这就需要你下载各种浏览器,IE浏览器就用IETester测试(IETester是一个免费的Web浏览器调试工具 ),IETester的坑非常多,根本不准,真实IE6还是会出bug(哭),后面学乖了,安装虚拟机,虚拟机里面装XP,XP自带了IE6,做好还用真的浏览器测试一下。这种方法花费的精力蛮多的,你自己搜索一下IE6/7/8的css兼容问题就明白了,所以还是用方法二吧。

解决方案二:直接检测浏览器类型和版本,给出提示信息,直接让用户不用IE打开就行,那就是让用户升级浏览器了,一劳永逸的方法。效果如下所示:

具体的实现方法也比较简单,JavaScript 包含一个名为 Navigator 的对象 ,Navigator 包含了有关访问者浏览器的信息,包括浏览器类型、版本等等 。Navigator对象里面含有两个重要的属性,appName (保存浏览器类型 ),appVersion (保存有浏览器的版本信息 )。下面我们用代码来测试一下:

  1. <script type="text/javascript">
  2. var browser = navigator.appName;//获取浏览器名字
  3. var b_version = navigator.appVersion;//获取浏览器版本信息
  4. var version = parseFloat(b_version);//提取浏览器版本号
  5. document.write("浏览器名称是: " + browser)//浏览器名称是: Netscape
  6. document.write("<br />")
  7. document.write("浏览器版本是: " + version)//浏览器版本是: 5
  8. </script>

上面例子中的 browser 变量存有浏览器的名称,比如,非IE显示"Netscape" 或者 IE显示"Microsoft Internet Explorer" ,所以只能判别是IE还是非IE,如果你是想让用户不用IE浏览器,这样也可以了。这里要注意一点,IE的版本号是有点问题的,IE4/5/6的版本号都是4.0,所以我们就可以做到:如果用户使用的是IE6或以下版本,请用户升级浏览器。

  1. <script type="text/javascript">
  2. function detectBrowser() {
  3. var browser = navigator.appName//获取浏览器名字
  4. var b_version = navigator.appVersion//获取浏览器版本信息
  5. var version = parseFloat(b_version)//提取浏览器版本号
  6. if ((browser == "Netscape" || browser == "Microsoft Internet Explorer")
  7. && (version >= 4)) {
  8. console.log('非IE浏览器,能访问页面');
  9. }
  10. else { alert("优秀的小伙伴都选择切换其他浏览器或升级IE浏览器了哦") }
  11. }
  12. detectBrowser();//调用函数,判别浏览器,如果是IE低版本提示用户升级
  13. </script>

当然,如果你想判别具体是哪种浏览器,那还得利用Navigator 的对象的userAgent属性,比如:

  1. var userAgent = navigator.userAgent;
  2. console.log(userAgent);

这里打印的是:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0 ,

用火狐测试;只要我们判断这段字符串里面包含Firefox就可以判断当下我们就是用火狐浏览器了,同样的方法我们可以用来检测各个浏览器:

  1. function getBrowserType(){
  2. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  3. var browser='unknown';
  4. if (userAgent.indexOf("IE")!=-1) {//字符串含有IE字段,表明是IE浏览器
  5. browser="IE";
  6. }else if(userAgent.indexOf('Firefox')!=-1){//字符串含有Firefox字段,表明是火狐浏览器
  7. browser="Firefox";
  8. }else if(userAgent.indexOf('OPR')!=-1){//Opera
  9. browser="Opera";
  10. }else if(userAgent.indexOf('Chrome')!=-1){//Chrome
  11. browser="Chrome";
  12. }else if(userAgent.indexOf('Safari')!=-1){//Safari
  13. browser="Safari";
  14. }else if(userAgent.indexOf('Trident')!=-1){//IE内核
  15. browser='IE 11';
  16. }
  17. return browser;
  18. }

如果你还想进一步判断IE浏览器的版本 ,比如:edge,ie11,10,9,8,7,6,5,4 ,代码如下:

  1. // 获取IE版本
  2. function IEVersion() {
  3. // 取得浏览器的userAgent字符串
  4. var userAgent = navigator.userAgent;
  5. // 判断是否为小于IE11的浏览器
  6. var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
  7. // 判断是否为IE的Edge浏览器
  8. var isEdge = userAgent.indexOf('Edge') > -1 && !isLessIE11;
  9. // 判断是否为IE11浏览器
  10. var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1;
  11. if (isLessIE11) {
  12. var IEReg = new RegExp('MSIE (\\d+\\.\\d+);');
  13. // 正则表达式匹配浏览器的userAgent字符串中MSIE后的数字部分,,这一步不可省略!!!
  14. IEReg.test(userAgent);
  15. // 取正则表达式中第一个小括号里匹配到的值
  16. var IEVersionNum = parseFloat(RegExp['$1']);
  17. if (IEVersionNum === 7) {
  18. // IE7
  19. return 7
  20. } else if (IEVersionNum === 8) {
  21. // IE8
  22. return 8
  23. } else if (IEVersionNum === 9) {
  24. // IE9
  25. return 9
  26. } else if (IEVersionNum === 10) {
  27. // IE10
  28. return 10
  29. } else {
  30. // IE版本<7
  31. return 6
  32. }
  33. } else if (isEdge) {
  34. // edge
  35. return 'edge'
  36. } else if (isIE11) {
  37. // IE11
  38. return 11
  39. } else {
  40. // 不是ie浏览器
  41. return -1
  42. }
  43. }

综合上面的方法,我们就可以回到今天的主题啦,我们的需求是:如果用户使用的是IE5/6/7/8,提示用户升级或切换其他浏览器:

  1. 第一步:声明一个函数(可以判断各个浏览器和版本)
  2. function getBroswerAndVersion(){//该函数可以判断各种浏览器和版本,最厉害的版本
  3. var os = navigator.platform;
  4. var userAgent = navigator.userAgent;
  5. var info = "";
  6. var tempArray = "";
  7. //判断浏览器版本
  8. var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
  9. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
  10. var isEdge = userAgent.toLowerCase().indexOf("edge") > -1 && !isIE; //判断是否IE的Edge浏览器
  11. var isIE11 = (userAgent.toLowerCase().indexOf("trident") > -1 && userAgent.indexOf("rv") > -1);
  12. if (/[Ff]irefox(\/\d+\.\d+)/.test(userAgent)) {
  13. tempArray = /([Ff]irefox)\/(\d+\.\d+)/.exec(userAgent);
  14. info += tempArray[1] + tempArray[2];
  15. } else if (isIE) {
  16. var version = "";
  17. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  18. reIE.test(userAgent);
  19. var fIEVersion = parseFloat(RegExp["$1"]);
  20. if (fIEVersion == 7)
  21. { version = "IE7"; }
  22. else if (fIEVersion == 8)
  23. { version = "IE8"; }
  24. else if (fIEVersion == 9)
  25. { version = "IE9"; }
  26. else if (fIEVersion == 10)
  27. { version = "IE10"; }
  28. else
  29. { version = "0" }
  30. info += version;
  31. } else if (isEdge) {
  32. info += "Edge";
  33. } else if (isIE11) {
  34. info += "IE11";
  35. } else if (/[Cc]hrome\/\d+/.test(userAgent)) {
  36. tempArray = /([Cc]hrome)\/(\d+)/.exec(userAgent);
  37. info += tempArray[1] + tempArray[2];
  38. } else if (/[Vv]ersion\/\d+\.\d+\.\d+(\.\d)* *[Ss]afari/.test(userAgent)) {
  39. tempArray = /[Vv]ersion\/(\d+\.\d+\.\d+)(\.\d)* *([Ss]afari)/.exec(userAgent);
  40. info += tempArray[3] + tempArray[1];
  41. } else if (/[Oo]pera.+[Vv]ersion\/\d+\.\d+/.test(userAgent)) {
  42. tempArray = /([Oo]pera).+[Vv]ersion\/(\d+)\.\d+/.exec(userAgent);
  43. info += tempArray[1] + tempArray[2];
  44. } else {
  45. info += "unknown";
  46. }
  47. return info;
  48. }

第二步:调用函数,得到的结果再判断给用户提示即可

  1. var bro = getBroswerAndVersion();//上面第一步封装的函数,调用会得到一个返回值
  2. if(bro=="IE5" || bro=="IE6" || bro=="IE7" || bro=="IE8" ){
  3. alert("浏览器版本过低!请升级至IE9以上");//此处应该显示一个漂亮的图片,让用户觉得再不升级就是out了
  4. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/101923
推荐阅读
相关标签
  

闽ICP备14008679号