这不是一篇严格意义上的原创,参考了很多大佬的文章, 下面根据自己的情况做了一下整理。
近两天,接到公司的需求----点击 H5 的购买按钮,跳转到 APP 对应的页面。啊! 一脸懵! 还等啥,赶紧查资料啊。
下面的描述分为两点:
通过 js 判断与跳转的思路是这样的
let u = navigator.userAgent
判断浏览器的系统类型及版本信息u.indexOf()
判断系统为 Android 还是 iOSu
含有的关键字段为 Android
或 Linux
u
含有的关键字段为 Mac OS X
上代码:
<!DOCTYPE html>
<html lang="en">
...
<body>
<div id="box">点击打开app</div>
</body>
<script>
document.querySelector('#box').addEventListener('click', function () {
// 判断是那种设备
let u = navigator.userAgent;
console.log(u);
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // Android系统或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // iOS系统
// 如果为Android系统
if (isAndroid) {
window.location.href = " "; // 直接跳转到App的链接,可以是 scheme 也可以是 App link 链接
window.setTimeout(function () {
window.location.href = " "; // 3s后如果不能跳转到 App,则跳转到 App 的下载地址,一般是应用宝的对应的下载地址
}, 3000);
return;
}
// ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios();
if (isiOS) {
let startIndex = u.indexOf('iPhone OS') + 9;
let endIndex = u.indexOf('like Mac OS') - 1;
let num = +u.slice(startIndex, endIndex).split('_')[0]; // 计算版本号的前面数值
if (num < 9) {
window.location.href = " "; // URL scheme 链接
} else {
window.location.href = " "; // universal link 链接
}
window.setTimeout(function () {
window.location.href = " "; // 3s后如果不能跳转到 App,则跳转到 AppStore 的下载地址
}, 3000);
return;
};
})
</script>
</html>
上面代码中有提到 URL scheme、universal link、App link,这三者之间有什么区别呢?
alipays
,则你的 App 在设置字段的时候就不能用 alipays