//放在App.vue中,可以一打开就检测
<el-alert type="error" center :closable="true" v-show="!browser().hasOwnProperty('chrome')">
<span slot="title" simple>
检测到当前浏览器非chrome内核浏览器,为了您的使用体验和程序运行速度,请使用chrome内核进行操作!
<a href="http://softdown.hikvision.com.cn/?p=76" target="_blank">下载谷歌浏览器</a>
</span>
</el-alert>
methods: {
browser: function() {
//检测浏览器内核--返回的是两个key,name:浏览器内核的名称---version:浏览器的版本号
let _broswer = {};
let sUserAgent = navigator.userAgent;
let isOpera = sUserAgent.indexOf("Opera") > -1;
if (isOpera) {
//首先检测Opera是否进行了伪装
if (navigator.appName == "Opera") {
//如果没有进行伪装,则直接后去版本号
_broswer.version = parseFloat(navigator.appVersion);
} else {
let reOperaVersion = new RegExp("Opera (\\d+.\\d+)");
//使用正则表达式的test方法测试并将版本号保存在RegExp.$1中
reOperaVersion.test(sUserAgent);
_broswer.version = parseFloat(RegExp["$1"]);
}
_broswer.opera = true;
_broswer.name = "opera";
}
let isChrome = sUserAgent.indexOf("Chrome") > -1;
if (isChrome) {
let reChorme = new RegExp("Chrome/(\\d+\\.\\d+(?:\\.\\d+\\.\\d+))?");
reChorme.test(sUserAgent);
_broswer.version = parseFloat(RegExp["$1"]);
_broswer.chrome = true;
_broswer.name = "chrome";
}
//排除Chrome信息,因为在Chrome的user-agent字符串中会出现Konqueror/Safari的关键字
let isKHTML =
(sUserAgent.indexOf("KHTML") > -1 ||
sUserAgent.indexOf("Konqueror") > -1 ||
sUserAgent.indexOf("AppleWebKit") > -1) &&
!isChrome;
if (isKHTML) {
//判断是否基于KHTML,如果时的话在继续判断属于何种KHTML浏览器
let isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
let isKonq = sUserAgent.indexOf("Konqueror") > -1;
if (isSafari) {
let reAppleWebKit = new RegExp("Version/(\\d+(?:\\.\\d*)?)");
reAppleWebKit.test(sUserAgent);
let fAppleWebKitVersion = parseFloat(RegExp["$1"]);
_broswer.version = parseFloat(RegExp["$1"]);
_broswer.safari = true;
_broswer.name = "safari";
} else if (isKonq) {
let reKong = new RegExp("Konqueror/(\\d+(?:\\.\\d+(?\\.\\d)?)?)");
reKong.test(sUserAgent);
_broswer.version = parseFloat(RegExp["$1"]);
_broswer.konqueror = true;
_broswer.name = "konqueror";
}
}
// !isOpera 避免是由Opera伪装成的IE
let isIE =
sUserAgent.indexOf("compatible") > -1 &&
sUserAgent.indexOf("MSIE") > -1 &&
!isOpera;
if (isIE) {
let reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(sUserAgent);
_broswer.version = parseFloat(RegExp["$1"]);
_broswer.msie = true;
_broswer.name = "msie";
}
// 排除Chrome 及 Konqueror/Safari 的伪装
let isMoz = sUserAgent.indexOf("Gecko") > -1 && !isChrome && !isKHTML;
if (isMoz) {
let reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
reMoz.test(sUserAgent);
_broswer.version = parseFloat(RegExp["$1"]);
_broswer.mozilla = true;
_broswer.name = "mozilla";
}
return _broswer;
}
}
JavaScript识别浏览器种类
最新推荐文章于 2024-03-29 11:18:08 发布