3***@qq.com
3***@qq.com
  • 发布:2022-03-25 16:28
  • 更新:2022-03-25 17:34
  • 阅读:497

为什么我的扫描二维码,扫描两三次就会死掉

分类:HBuilderX

为什么我的扫描二维码,扫描两三次就会死掉,不知道下面的代码有什么问题,这个是通用的弹出扫码页面

<!DOCTYPE html>  
<html>  
    <head>  
        <meta charset="utf-8" />  
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />  
        <meta name="HandheldFriendly" content="true" />  
        <meta name="MobileOptimized" content="320" />  
        <title>梦百合WMS</title>  
        <script src="js/jquery.min.js"></script>  
        <script src="js/mui.min.js"></script>  
        <script src="js/mui.enterfocus.js"></script>  
        <script src="js/app.js"></script>  
        <script type="text/javascript">  
            var ws = null,  
                wo = null;  
            var scan = null,  
                domready = false;  

            mui.init({  
                beforeopen:function(){  

                },  

                beforeback: function() {  
                    //获得父页面的webview  
                    var list = plus.webview.currentWebview().opener();  
                    //触发父页面的自定义事件(refresh),从而进行刷新  
                    mui.fire(list, 'refresh');  
                    //返回true,继续页面关闭逻辑  
                    return true;  
                }  
            });  
            // H5 plus事件处理   
            function plusReady() {  

                if (ws || !window.plus || !domready) {  
                    return;  
                }  
                // 获取窗口对象   
                ws = plus.webview.currentWebview();  
                wo = ws.opener();  
                // 开始扫描   
                ws.addEventListener('show', function() {  
                    scan = new plus.barcode.Barcode('bcid');  
                    scan.onmarked = onmarked;  
                    scan.start({  
                        conserve: true,  
                        filename: '_doc/barcode/'  
                    });  
                }, false);  
                // 显示页面并关闭等待框   
                ws.show('pop-in');  

            }  
            if (window.plus) {  
                plusReady();  
            } else {  
                document.addEventListener('plusready', plusReady, false);  
            }  
            // 监听DOMContentLoaded事件   
            document.addEventListener('DOMContentLoaded', function() {  

                domready = true;  
                plusReady();  
            }, false);  
            // 二维码扫描成功   
            function onmarked(type, result, file) {  
                switch (type) {  
                    case plus.barcode.QR:  
                        type = 'QR';  
                        break;  
                    case plus.barcode.EAN13:  
                        type = 'EAN13';  
                        break;  
                    case plus.barcode.EAN8:  
                        type = 'EAN8';  
                        break;  
                    default:  
                        type = '其它' + type;  
                        break;  

    }  
                resultresult = result.replace(/\n/g, '');  

                //分析扫描结果:是URL就跳转 ,不是就提示   
                //localStorage.setItem("gcodebar",resultresult);  
                try {  
                    var scantyp=localStorage.getItem("scanTyp")  

                    var  returnFunction="";  
                    if ( scantyp== "1"){  
                         returnFunction = "SetIptCard('" + resultresult + "')";  
                    }  
                    else if ( scantyp== "2"){  
                        returnFunction = "SetBox1('" + resultresult + "')";  
                    }  
                    else if ( scantyp== "3"){  
                        returnFunction = "SetBox2('" + resultresult + "')";  
                    }  
                    else if ( scantyp== "4"){  
                        returnFunction = "SetLocation('" + resultresult + "')";  
                    }  

                    var wvB = plus.webview.currentWebview();  
                    var wvA = wvB.opener(); //获取当前窗口的创建者,即A       
                    wvA.evalJS(returnFunction); //执行父窗口中的方法   
                    back();  
                } catch (e) {  
                    alert(e)  
                    back();  
                }  
            }  

            //关闭  
            function back() {  

                plus.nativeUI.closeWaiting();  
                mui.back();  
            }  
            // 从相册中选择二维码图片    
            function scanPicture() {  
                plus.gallery.pick(function(path) {  
                    plus.barcode.scan(path, onmarked, function(error) {  
                        plus.nativeUI.mui.toast('无法识别此图片');  
                    });  
                }, function(err) {  
                    plus.nativeUI.mui.toast('Failed: ' + err.message);  
                });  
            }  
        </script>  
        <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />  
        <style type="text/css">  
            #bcid {  
                width: 100%;  
                position: absolute;  
                top: 0px;  
                bottom: 44px;  
                text-align: center;  
            }  

            .tip {  
                color: #FFFFFF;  
                font-weight: bold;  
                text-shadow: 0px -1px #103E5C;  
            }  

            footer {  
                width: 100%;  
                height: 44px;  
                position: absolute;  
                bottom: 0px;  
                line-height: 44px;  
                text-align: center;  
                color: #FFF;  
            }  

            .fbt {  
                width: 50%;  
                height: 100%;  
                background-color: #007500;  
                float: left;  
            }  

            .fbt:active {  
                -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.5);  
                box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.5);  
            }  
        </style>  
    </head>  
    <body style="background-color: #000000;">  
        <div id="bcid">  
            <div style="height:40%"></div>  
            <p class="tip">...载入中...</p>  
        </div>  
        <footer>  
            <div id="cancel" class="fbt" onclick="back()">取  消</div>  
            <div id="fbt" class="fbt" onclick="scanPicture()">从相册选择二维码</div>  
        </footer>  

    </body>  
</html>
2022-03-25 16:28 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com (作者) - fany

不知道是不是ui没有及时关注,如果多次扫描,那么 openwindow也无法打开此页面,如果mui.back,再进这个页,点扫码跳出页面时,虽然可以跳出扫码页面,但是却是黑屏

3***@qq.com

3***@qq.com (作者) - fany

测试了多台手机,只有鸿蒙会出现这种情况

该问题目前已经被锁定, 无法添加新回复