判断机型是安卓还是ios
<div id="btn">
<a onclick="detect" id="a"><button>打开app</button></a>
</div>
<script>
var a = document.getElementById("a")
// 1、 识别手机类型
var u = navigator.userAgent
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1
//android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
//ios终端
if (isAndroid) {
a.href = "bb";
} else {
a.href = "aa";
}
//要求如果是安卓直接下载apk如果是苹果则先跳到苹果商城在下载
</script>
今天公司要求判断不同的机型挑战不同的链接,由于平时关注的是业务的实现,很少关注终端的问题,因此也有一些方法基本忘完了,写下博客加深印象
navigator.userAgent获取浏览器信息(类型及系统)
// 各主流浏览器
function getBrowser() {
//获取各个浏览器信息 navigator.userAgent
var u = navigator.userAgent;
var bws = [{
name: 'sgssapp',
it: /sogousearch/i.test(u)
}, {
name: 'wechat',
it: /MicroMessenger/i.test(u)
}, {
name: 'weibo', //微博
it: !!u.match(/Weibo/i)
}, {
name: 'uc', //uc
it: !!u.match(/UCBrowser/i) || u.indexOf(' UBrowser') > -1
}, {
name: 'sogou',//搜狗
it: u.indexOf('MetaSr') > -1 || u.indexOf('Sogou') > -1
}, {
name: 'xiaomi', //小米
it: u.indexOf('MiuiBrowser') > -1
}, {
name: 'baidu',//百度
it: u.indexOf('Baidu') > -1 || u.indexOf('BIDUBrowser') > -1
}, {
name: '360', //360
it: u.indexOf('360EE') > -1 || u.indexOf('360SE') > -1
}, {
name: '2345',//2345
it: u.indexOf('2345Explorer') > -1
}, {
name: 'edge',
it: u.indexOf('Edge') > -1
}, {
name: 'ie11',//ie11版本
it: u.indexOf('Trident') > -1 && u.indexOf('rv:11.0') > -1
}, {
name: 'ie', //ie
it: u.indexOf('compatible') > -1 && u.indexOf('MSIE') > -1
}, {
name: 'firefox', //火狐
it: u.indexOf('Firefox') > -1
}, {
name: 'safari',
it: u.indexOf('Safari') > -1 && u.indexOf('Chrome') === -1
}, {
name: 'qqbrowser',
it: u.indexOf('MQQBrowser') > -1 && u.indexOf(' QQ') === -1
}, {
name: 'qq',
it: u.indexOf('QQ') > -1
}, {
name: 'chrome',//谷歌
it: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1
}, {
name: 'opera',//欧朋
it: u.indexOf('Opera') > -1 || u.indexOf('OPR') > -1
}];
//如果是上面的浏览器就返回他的名字否则返回other
for (var i = 0; i < bws.length; i++) {
if (bws[i].it) {
return bws[i].name;
}
}
return 'other';
}
// 系统区分
function getOS() {
var u = navigator.userAgent;
//match方法匹配,常用于正则
if (!!u.match(/compatible/i) || u.match(/Windows/i)) {
return 'windows';
} else if (!!u.match(/Macintosh/i) || u.match(/MacIntel/i)) {
return 'macOS';
} else if (!!u.match(/iphone/i) || u.match(/Ipad/i)) {
return 'ios';
} else if (!!u.match(/android/i)) {
return 'android';
} else {
return 'other';
}
}
下面来说下区分不同浏览器版本打开不同页面
首先要了解下面代码之前必须了解什么是edge,与ie有什么区别 不想去看的童鞋这里我简单提一句
,Edge浏览器和IE浏览器是两个不同的浏览器,Edge浏览器是随着Win10系统发布的,虽然Win10系统内依旧保留了ie浏览器,但系统默认浏览器已经是Edge了,而不是IE浏览器,
由于Edge浏览器抛弃了过往的包袱,所以Edge浏览器开发代码更为精简和优化,所带来的好处就是速度的提升和更加安全,Edge浏览器内核是使用微软全新开发的MSHTML渲染引擎,与IE浏览器完全不同,Edge浏览器要比IE11浏览器速度快两倍多。
除了速度和安全的改变之外,Edge浏览器将支持扩展插件,这是IE浏览器所不具备的,与Chrome和火狐扩展程序一样,Edge扩展程序必须利用HTML和JavaScript开发。
从实际的评测数据来看,Edge浏览器性能面对IE11是完胜,在Octane 2.0 JavaScript Benchmark这个项目上微软Edge领先幅度超过了50%!Kraken JavaScript Benchmark这个项目的优势也将近50%,无论在速度、性能、安全上,Edge浏览器都要比IE浏览器强大很多。
<script src="js/jquery-1.8.3.min.js" charset="utf-8"></script>
<script>
$(document).ready(function() {
var num = IEVersion()
//如果版本小于9则直接打开本页面显示使用高版本如果版本小于9则应打开live.html 就直接把打包好的文件名修改为live.html
$('#text').hide()
if (num > 9) {
window.location.href = "live.html"
} else {
$('#text').show()
}
});
function IEVersion() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;//判断内核
if (isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if (fIEVersion == 7) {
return 7;
} else if (fIEVersion == 8) {
return 8;
} else if (fIEVersion == 9) {
return 9;
} else if (fIEVersion == 10) {
return 10;
} else {
return 6; //IE版本<=7
}
} else if (isEdge) {
return 999; //edge
} else if (isIE11) {
return 11; //IE11
} else {
return 99; //不是ie浏览器
}
}
</script>
</head>
<body>
<div style="text-align: center; padding-top: 50px;" id="text">当前浏览器版本太低,请升级到IE10以上或用别的浏览器打开!(建议使用谷歌或者火狐浏览器)</div>
</body>
上面这段代码是判断兼容性的,如果你开发的项目不支持ie7以下的建议使用该代码,如果支持直接无视把
总结:由于平时不多看基础知识,导致曾经遇到过的判断系统信息都觉得麻烦,还是多看看底层原理把