很久不见啦 (오랜만이다) 🧐
因为浏览器之间的差异,兼容IE
应该是前端开发中最令人头大的事情了!
注:新版的 Edge
已经拥抱 Chromium
内核,与 IE
脱离了关系。旧版的 Edge
也将在 2021
年结束支持。(在微软 Win10 20H
的系统版本中,新版 Edge
替代旧版作为系统内置的浏览器)
HTML判断
针对 IE10
以下的版本 (不包括 IE 10
,除此之外也不包括 IE 11
和 Edge (旧版)
),因为 IE10
及以上版本不支持这样判断了。
<!--[if IE 6]> IE6 <![endif]-->
<!--[if lte IE 6]> IE6及以下版本 <![endif]-->
<!--[if lt IE 6]> IE6以下版本 <![endif]-->
<!--[if gte IE 6]> IE6及以上版本 <![endif]-->
<!--[if gt IE 6]> IE6以上版本 <![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if !IE]><!--> 除了IE9及以下版本不能识别,其余所有浏览器都能识别 <!--<![endif]-->
JavaScript判断
1. 判断IE浏览器
//除了edge所有IE浏览器返回true
function isIE() {
if (!!window.ActiveXObject || 'ActiveXObject' in window)
return true
else
return false
}
2. IE10及以下版本浏览器
针对 IE10 及以下版本浏览器,还可以通过下面的方式判断
//IE10及以下版本返回true
function isIE() {
if (window.navigator.userAgent.indexOf("MSIE") >= 1)
return true
else
return false
}
3. 判断其他浏览器
先看下不同浏览器的 userAgent
:
谷歌浏览器 Chrome
火狐浏览器 Firefox
Safari浏览器 Safari
Opera浏览器 Opera
(应该使用 OPR
吧)
Edge (旧版) Edge
Edge (新版) Edg
原理都是获取 navigator.userAgent
参数来判断,但是返回值是有特殊性的,所以判断的顺序要注意下。
function getBrowser() {
var browserList = ['opr', 'edge', 'edg', 'chrome', 'firefox', 'safari'],
userAgent = navigator.userAgent.toLowerCase()
if (!!window.ActiveXObject || 'ActiveXObject' in window)
return 'ie'
for (var index in browserList) {
if (browserType = userAgent.indexOf(browserList[index]) > -1)
return browserList[index]
}
}