【前端】IOS微信浏览器点击右上角遮罩实现

简介: 现在有一个需求,通过公众号或者链接,下载app应用,大家都知道,安卓和ios下载对应的版本都不一样。并且,ios 微信浏览器不支持应用下载,需要实现一个遮罩功能,提示用户通过浏览器下载,效果如下:

前言

现在有一个需求,通过公众号或者链接,下载app应用,大家都知道,安卓和ios下载对应的版本都不一样。并且,ios 微信浏览器不支持应用下载,需要实现一个遮罩功能,提示用户通过浏览器下载,效果如下:

在这里插入图片描述

原理

我们先说下实现原理。这个遮罩功能,只允许在一个场景内实现,就是IOS微信浏览器内部。那怎么判断用户是否是IOS微信浏览器访问的呢?

研究发现微信的UA中一定带有MicroMessenger。并且其他浏览器UA中没有,这时候就可以利用MicroMessenger 来判断。代码片段如下:

<script>
         var ua = navigator.userAgent.toLowerCase();
             if (ua.match(/MicroMessenger/i) == "micromessenger") {
                return true;
            } else {
                return false;
            }
</script>

IOS场景判断:

ios 场景又分两种,IOS微信浏览器和非微信浏览器,代码片段如下:

<script>
    if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
    
        $(window).on("load", function () {
            var winHeight = $(window).height();
            function is_weixin() {
                var ua = navigator.userAgent.toLowerCase();
                if (ua.match(/MicroMessenger/i) == "micromessenger") {
                    return true;
                } else {
                    return false;
                }
            }

            var isWeixin = is_weixin();
            //微信浏览器打开遮罩
            if (isWeixin) {
                $(".weixin-tip").css("height", winHeight);
                $(".weixin-tip").show();
            } else {
            //非微信浏览器,直接访问下载链接
                window.location.href = "IOS对应的下载链接";
            }
        })

    } 
</script>

安卓场景:

<script>
    if (/(Android)/i.test(navigator.userAgent)) {
        window.location.href = "安卓对应的下载链接";
    } 
</script>

PC mac 场景:

<script>
 if (/(mac os x)/i.test(navigator.userAgent)) {
        window.location.href = "IOS对应的下载链接";
    }
</script>

剩下的就是PC windows 场景了。

完整源码如下:

CSS:

<head>
    <meta charset="UTF-8">
    <title>COMI下载</title>
    <style>
        .weixin-tip {
            display: none;
            position: fixed;
            left: 0;
            top: 0;
            background: rgba(0, 0, 0, 0.8);
            filter: alpha(opacity=80);
            height: 100%;
            width: 100%;
            z-index: 100;
        }

        .weixin-tip p {
            text-align: center;
            margin-top: 10%;
            padding: 0 5%;
        }

        .img1 {
            width: 100%;
            height: 100%;
            filter: alpha(opacity=100);
            -moz-opacity: 0.4;
            -khtml-opacity: 0.5;
            opacity: 0.5;
        }
    </style>
</head>

Body:

<body>
    <div class="weixin-tip">
        <img src="mobile_bg.jpg" class="img1"/>
    </div>
</body>

JS:

<script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

<script typet="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>

    var u = navigator.userAgent;
    var isiOS = /iPad|iPhone|iPod/.test(navigator.userAgent); //ios终端

    if (isiOS) {
        $(window).on("load", function () {
            var winHeight = $(window).height();

            function is_weixin() {
                var ua = navigator.userAgent.toLowerCase();
                if (ua.match(/MicroMessenger/i) == "micromessenger") {
                    return true;
                } else {
                    return false;
                }
            }

            var isWeixin = is_weixin();
            if (isWeixin) {
                $(".weixin-tip").css("height", winHeight);
                $(".weixin-tip").show();
            } else {
                window.location.href = "IOS对应的下载链接";
            }
        })

    } else if (/(mac os x)/i.test(navigator.userAgent)) {
        window.location.href = "IOS对应的下载链接";

    } else if (/(Android)/i.test(navigator.userAgent)) {
        window.location.href = "安卓对应的下载链接";

    } else {
        window.location.href = "PC windows对应的下载链接";
    }

</script>

最后给大家奉上原图,以供大家使用。

如有帮助,麻烦点赞收藏关注,感谢。

在这里插入图片描述

相关文章
|
6月前
|
JavaScript 前端开发
vue前端下载,实现点击按钮弹出本地窗口,选择自定义保存路径
这个不用代码实现(网上也找不到方法可以调出另存为窗口),更改浏览器设置就可以,否则,现在的浏览器都是默认直接保存到下载路径中
514 3
|
2月前
|
iOS开发 开发者
iOS微信分享配置universal links步骤
iOS微信分享配置universal links步骤
1320 58
|
3月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
251 0
|
2月前
|
iOS开发
iOS超出父控件范围无法点击问题
iOS超出父控件范围无法点击问题
140 58
|
6月前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
277 0
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
2月前
|
iOS开发
iOS超出父控件范围无法点击问题
iOS超出父控件范围无法点击问题
|
4月前
|
前端开发 JavaScript PHP
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
52 0
|
4月前
|
开发框架 前端开发 JavaScript
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
|
6月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
107 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
6月前
|
JavaScript 前端开发
【Web 前端】如何在点击一个按钮时使用 jQuery 隐藏一个图片?
【5月更文挑战第2天】【Web 前端】如何在点击一个按钮时使用 jQuery 隐藏一个图片?