当前位置: 首页 > news >正文

h5页面用js判断机型是安卓还是ios,判断有app安装没app跳转应用商店app stroe或者安卓应用商店

用vue3写的wep页面。亲测好使。
疑惑:
微信跳转和浏览器跳转不一样,需要控制定时器的时间,android在没下载的情况下点击没反应,ios在没下载的情况下会跳404,就是定时器2000,不知道有没有别的办法,用iframe嵌套ios的跳转在没下载的情况下是404,2000是刚好的时间点,有点刚刚好,不是特别完美。有大佬会的可以交流。

<template><div><div class="bottom_button"><div class="downloadapp" @click="downloadApp">下载客户端</div><div class="openapp" @click="openApp">已下载APP 立即打开</div></div></div>
</template>
<script setup>// 检测是哪个客户端const detectDevice = () => {/*** navigator.userAgent用户浏览器相关信息的只读属性* window.opera JavaScript语言,是opera5开始有的一个脚本object,一个boolean的值,用来检察浏览器是否是opera*/var userAgent = navigator.userAgent || navigator.vendor || window.opera;if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {return 'iOS';} else if (userAgent.match(/Android/i)) {return 'Android';} else {return 'unknown';};};// 打开appconst openApp = () => {let deviceType = detectDevice();if (deviceType === 'Android') {console.log('安卓用户在没安装的情况下点击没反应,有的话在跳转');try {const appURL = "跳转地址"; // 替换成你的应用的URL Scheme或Universal Linkwindow.location.href = appURL;} catch (error) {// 如果捕获到错误,通常意味着应用没有安装console.error("应用未安装或无法打开", error);downloadApp();}};if (deviceType === 'iOS') {console.log('苹果用户,在没安装的情况下会跳转到一个404页面。需要做一个处理');const appURL = "跳转地址"; // 替换成你的应用的URL Scheme或Universal Linklet loadDateTime = new Date();window.setTimeout(function() {let timeOutDateTime = new Date();console.log(timeOutDateTime, 'timeOutDateTime', timeOutDateTime - loadDateTime < 5000, timeOutDateTime - loadDateTime);if (timeOutDateTime - loadDateTime < 5000) {downloadApp();} else {window.close();}}, 2000);window.location = appURL;}};// 下载appconst downloadApp = () => {let deviceType = detectDevice();if (deviceType === 'Android') {console.log('下载');const downloadURL = "下载地址";window.location = downloadURL;} else if (deviceType === 'iOS') {// 跳转到应用商店下载应用的URLconst downloadURL = "下载地址"; // 替换成你的应用下载链接window.location = downloadURL;} else {console.log('其他');}}
</script>
http://www.lryc.cn/news/344236.html

相关文章:

  • 算法人生(17):从“课程学习”到“逐步暴露心理疗法”
  • C++仿函数周边及包装器
  • 改进灰狼算法优化随机森林回归预测
  • Hadoop生态系统的核心组件探索
  • 命令行方式将mysql数据库迁移到达梦数据库(全步骤)
  • 旅游系列之:庐山美景
  • 杭州恒生面试,社招,3年经验
  • python virtualenv 创建虚拟环境指定python版本,pip 从指定地址下载某个包
  • open feign支持调用form-data的接口
  • ESD静电问题 | TypeC接口整改
  • 基于springboot+mybatis+vue的项目实战之前端
  • 开源软件托管平台gogs操作注意事项
  • Linux cmake 初窥【3】
  • centos学习- ps命令详解-进程监控的利器
  • C++贪心算法
  • 访问网络附加存储:nfs
  • jsp 实验12 servlet
  • 「 网络安全常用术语解读 」通用配置枚举CCE详解
  • 一机游领航旅游智慧化浪潮:借助前沿智能设备,革新旅游服务效率,构建高效便捷、生态友好的旅游服务新纪元,开启智慧旅游新时代
  • 设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(实现)
  • BJFUOJ-C++程序设计-实验2-类与对象
  • 数据库语法复习
  • Tomcat、MySQL、Redis最大支持说明
  • MATLAB数值计算工具箱介绍
  • 2023 广东省大学生程序设计竞赛(部分题解)
  • ROS2学习——Docker环境下安装于使用(1)
  • 数据仓库之Hologres
  • MacOS搭建docker本地私有镜像库
  • Unity Material(材质)、Texture(纹理)、Shader(着色器)简介
  • 《视觉十四讲》例程运行记录(1)—— 课本源码下载和3rdparty文件夹是空的解决办法