JavaScript 判断浏览器是否是IE


Posted in Javascript onFebruary 19, 2021

作为一个前端,避免不了会遇见IE的坑,其他浏览器都好好的,测到IE就完蛋,各种不支持,服气了

有些属性和方法是所有版本IE都不支持,而有些则是部分支持,在项目中能够,主要分界岭为IE8,我相信目前大部分在维护和开发的项目,都是支持到IE8及已上版本即可,那么这篇文章,粗浅的总结一下,如何判断浏览器是IE及版本是8.0

首先,有些属性和方法是所有版本IE都不支持,那么只需要判断是否是IE即可

以下三种是我在项目中,用到的方法,如有新的方法,会更新,若大家有其他更好的方法,还望不吝赐教~~

  • document.all
  • window.ActiveXObject
  • window.navigator.msSaveOrOpenBlob
//选一种即可
function isIE(){
 // 据说火狐以后会加入document.all这个方法,所以建议使用另外二种方法
 if (document.all) return true; 
 
 if (!!window.ActiveXObject || "ActiveXObject" in window) return true; 
 
 if (window.navigator && window.navigator.msSaveOrOpenBlob) return true; 
}

判断浏览器是IE8及以下版本

我在上文中也提到,大部分在维护和开发的项目,都是支持到IE8及已上版本即可

navigator.userAgent

JavaScript 判断浏览器是否是IE

function isIE8(){
 var DEFAULT_VERSION = 8.0; 
 var ua = navigator.userAgent.toLowerCase(); 
 var isIE = ua.indexOf("msie")>-1; 
 var safariVersion; 
 if(isIE){ 
  safariVersion = ua.match(/msie ([\d.]+)/)[1]; 
 } 
 if(safariVersion <= DEFAULT_VERSION ){ 
  return true 
 };
}

如有特殊要求,需要兼容更低版本,那么:

var isIE = !!window.ActiveXObject; 

var isIE6 = isIE && !window.XMLHttpRequest; 

var isIE8 = isIE && !!document.documentMode; 

var isIE7 = isIE && !isIE6 && !isIE8;

IE8及以下不支持的CSS属性

  • 阴影 box-shadow
  • 渐变 linear-gradient
  • 提示符 placeholder
  • 透明度 rgba
  • 边框 border-image
  • 圆角 border-radius
  • 旋转相关 transform

IE不支持的方法

在线浏览PDF文件,因为IE并没有内置的pdf阅读器,因此只能下载查看

  • 后端返回文件流时:window.navigator.msSaveOrOpenBlob(blob);具体可以参考另两篇博文,
  • JavaScript处理后端返回PDF文件流,在线预览下载PDF文件
  • Vue.js +pdf.js 处理响应pdf文件流数据,前端转图片预览不可下载

不支持<a>标签的download属性,因此可以用新建iframe,并设置其src属性

if (isIE()){
	$("a").bind('click',function(){
		var elemIF = document.createElement("iframe"); 
		elemIF.src = FilePath;
		elemIF.style.display = "none"; 
		document.body.appendChild(elemIF);
	});
} else {
	$("a").attr("href",FilePath).attr("download",FileName);
}

以上就是JavaScript 判断浏览器是否是IE的详细内容,更多关于JavaScript 判断浏览器的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
JAVASCRIPT 对象的创建与使用
Mar 09 Javascript
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
jQuery实现平滑滚动到指定锚点的方法
Mar 20 Javascript
javascript 实现map集合
Apr 03 Javascript
深入理解setTimeout函数和setInterval函数
May 20 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
vue中注册自定义的全局js方法
Nov 15 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
原生JavaScript实现进度条
Feb 19 #Javascript
原生JavaScript实现换肤
Feb 19 #Javascript
基于vue的video播放器的实现示例
Feb 19 #Vue.js
JavaScript Dom实现轮播图原理和实例
Feb 19 #Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 #Javascript
react项目从新建到部署的实现示例
Feb 19 #Javascript
原生JavaScript实现幻灯片效果
Feb 19 #Javascript
You might like
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
小试JQuery的AutoComplete插件
2011/05/04 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
python错误处理详解
2014/09/28 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
Pytorch之Variable的用法
2019/12/31 Python
如何基于Python创建目录文件夹
2019/12/31 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
python 基于opencv操作摄像头
2020/12/24 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
水务局局长岗位职责
2013/11/28 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
英文请假条
2014/04/11 职场文书
中文专业自荐书
2014/06/29 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
MySQL常用慢查询分析工具详解
2022/08/14 MySQL