你的位置:首页 > Java教程

[Java教程]判断浏览器类型的一些方法


在做项目时总会要调整IE浏览器兼容性,在html中,通常可以使用条件注释法,这也是IE专有的hack方法。

 

Html代码 复制代码 收藏代码

  1. <!--[if IE]>  
  2.     只在IE浏览器显示  
  3. <![endif]-->  
  4.   
  5. <!--[if !IE]>  
  6.     只在非IE浏览器显示  
  7. <![endif]-->  
  8.       
  9. <!--[if IE 6]>  
  10.     只在IE6浏览器显示  
  11. <![endif]-->  
  12.       
  13. <!--[if ! IE 8]>  
  14.     在非IE8浏览器显示  
  15. <![endif]-->  

<!--[if IE]>	只在IE浏览器显示<![endif]--><!--[if !IE]>	只在非IE浏览器显示<![endif]-->	<!--[if IE 6]>	只在IE6浏览器显示<![endif]-->	<!--[if ! IE 8]>	在非IE8浏览器显示<![endif]-->

 

但经过测试,发现该方法只在IE9及以下版本试用,不适用于IE10和IE11。而且因为在IE9及以下有用,也导致<!--[if !IE]>是个鸡肋,没有用。这时需要判断IE10以上,则不能使用条件注释法了。

 

如果要判断IE10,可以这样判断:

Html代码 复制代码 收藏代码

  1. <style>  
  2.     @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
  3.         .class {  
  4.             /* 仅限IE10的代码 */  
  5.             }  
  6.     }  
  7. </style>  

<style>	@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {		.class {			/* 仅限IE10的代码 */     	}	}</style>

但要判断IE11又不知如何判断了,网上看了看有js的方法,后来找到一款不错的JavaScript的判断游览器的方法,特别的全面。如下:

【java框架源码下载】

Js代码 复制代码 收藏代码

  1. $(function () {  
  2.         var Sys = {};  
  3.         var ua = navigator.userAgent.toLowerCase();  
  4.         var s;  
  5.         (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :  
  6.         (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :  
  7.         (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :  
  8.         (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :  
  9.         (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :  
  10.         (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;  
  11.           
  12.         if (Sys.ie) document.write('IE: ' + Sys.ie);  
  13.         if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);  
  14.         if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);  
  15.         if (Sys.opera) document.write('Opera: ' + Sys.opera);  
  16.         if (Sys.safari) document.write('Safari: ' + Sys.safari);  
  17.     });  

$(function () {    var Sys = {};    var ua = navigator.userAgent.toLowerCase();    var s;    (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :    (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :    (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :    (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :    (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :    (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;        if (Sys.ie) document.write('IE: ' + Sys.ie);    if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);    if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);    if (Sys.opera) document.write('Opera: ' + Sys.opera);    if (Sys.safari) document.write('Safari: ' + Sys.safari);  });

 

不过这样判断虽然简单,但是代码质量不是很好,总要通过操作DOM来修改样式,如果有别的简单方法可以先考虑其他的方法,实在不行在使用。