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的设计模式
Nov 22 Javascript
javascript面向对象的方式实现的弹出层效果代码
Jan 28 Javascript
新老版本juqery获取radio对象的方法
Mar 01 Javascript
jQuery 学习第五课 Ajax 使用说明
May 17 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
js+html制作简单验证码
Feb 16 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
ES6新增的math,Number方法
Aug 06 Javascript
javascript实现滚轮轮播图片
Dec 13 Javascript
原生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
PHP配置文件中最常用四个ini函数
2007/03/19 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
window.location 对象所包含的属性
2014/10/10 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
django中的HTML控件及参数传递方法
2018/03/20 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
公司会计主管岗位责任制
2014/03/01 职场文书
感恩节活动策划方案
2014/05/16 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
电气自动化求职信
2014/06/24 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
撤诉申请怎么写
2015/05/19 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
Pygame如何使用精灵和碰撞检测
2021/11/17 Python