(补充)微信长按识别二维码 -- 页面多个二维码如何识别?(二)

基于上一篇微信长按识别二维码 -- 页面多个二维码如何识别?
)在部分设备上,如果图片非常多,还是会出现识别错误的bug(主要是二维码显示一半或居于底部时),修改了识别流程,改为点击图片弹窗,然后长按识别

微信长按识别二维码

 

页面布局,在列表页上覆盖一层大图div

<div id="tempQrCodeImgDiv" style="width:100%;height:100%; position:fixed; display:none;background:#efeff4;z-index:90;">
    <div style="text-align:center; font-size: 22px; margin-top:30px; color:#ff560e">长按图片识别二维码</div>
    <img id="tempQrCodeImg" src="" style="width: 80%; margin-top:30px; margin-left:10%;z-index:100" />
    <div id="tempQrCodeName" style="text-align:center; font-size: 18px; margin-top:16px; color:#434243;" ></div>
    <div id="tempQrCodeDismissBtn" style="text-align:center; font-size: 18px; margin-left:20%;margin-right:20%; margin-top:50px; padding: 10px 20px;border-radius: 5px; background:none; border: 1px  #555 solid; color:#434243;">返&emsp;回</div>
</div>
<div style="text-align:center; font-size: 22px; margin-top:30px; color:#ff560e">单击图片放大后长按识别</div>

然后是列表页,与上文基本一致:

for (var i = 0; i < Model.settings.Count; i = i + 2)
{
    <div class="ne-cell flex">
        <div class="ne-grids col3  " style="flex:1">
            <div name="qrCodeImgDiv" style="text-align:center; width: 80%; margin-left:10%; margin-top:20px;">
                <img name="qrCodeImg" src="~/@Model.settings[i].QrCodePath" style="width: 100%; pointer-events: none;" alt="@Model.settings[i].Name"/>
            </div>
            <div id="div-name" style="text-align:center; margin-top:16px; color:#434243">@Model.settings[i].Name</div>
        </div>
        <div class="ne-grids col3 " style="flex:1">
            @if (i < Model.settings.Count - 1 && !string.IsNullOrEmpty(Model.settings[i + 1].QrCodePath))
            {
                <div name="qrCodeImgDiv" style="text-align:center; width: 80%; margin-left:10%; margin-top:20px; z-index:100">
                    <img name="qrCodeImg" src="~/@Model.settings[i+1].QrCodePath" style="width: 100%; pointer-events: none; " alt="@Model.settings[i + 1].Name" />
                </div>
                <div id="div-name" style="text-align:center; margin-top:16px; color:#434243">@Model.settings[i + 1].Name</div>
            }
        </div>
    </div>
}

最后是js

function load() {
            var imgs = document.getElementsByName("qrCodeImgDiv");
            for (var i = 0; i < imgs.length; i++) {
                imgs[i].addEventListener("click", function () {
                    var qrCodeImg = this.getElementsByTagName("img")[0];
                    document.getElementById("tempQrCodeImg").src = qrCodeImg.src;
                    document.getElementById("tempQrCodeName").textContent = qrCodeImg.alt;
                    document.getElementById("tempQrCodeImgDiv").style.display = 'block';
                })
            }
            document.getElementById("tempQrCodeDismissBtn").addEventListener("click", function () {
                document.getElementById("tempQrCodeImg").src = "";
                document.getElementById("tempQrCodeName").textContent = "";
                document.getElementById("tempQrCodeImgDiv").style.display = 'none';
            })
        }

        window.addEventListener('load', load, false);

大部分样式都在代码中写成style了,列表页比较简答,用的css没有改过来,自己对应加下就ok了;毕竟这里主要是提供思路。

最终效果如下图:

长按识别多个二维码.gif

 

ps:相对于之前代码,用户操作变得繁琐了,但是,在图片非常多时不会出现识别错误的bug;如果只有1~4张二维码,可以使用之前的版本长按二维码识别1;如果是图片较多,一页5-6张图片,而且有多页,则使用本文所述方法!当然,如果有更好的方案解决该问题,欢迎留言,多谢!

博客: IT老五 简书:ThinkinLiu


IT老五(it-lao5):关注公众号,一起源创,一起学习!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值