3***@qq.com
3***@qq.com
  • 发布:2018-05-14 14:05
  • 更新:2018-07-06 15:16
  • 阅读:2333

【报Bug】很多人提的barcode扫码位置的bug,官网怎么没人解决?

分类:HTML5+

详细问题描述
很多人提的barcode扫码位置的bug,官网怎么没人解决?
barcode的扫码位置,在真机调试的时候,样式调整根本无效果。

用的就是官方文档的例子:

http://ask.dcloud.net.cn/question/54987

2018-05-14 14:05 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com - 80后.NET全栈开发工程师

我这边也有这样一个问题,调用方式如下
<!doctype html>
<html>

<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <link href="css/mui.min.css" rel="stylesheet" />  
    <style type="text/css">  
        #bcid {  
            width: 100%;  
            height: 100%;  
            position: absolute;  
            /*top: 0px;*/  
            background: #000000;  
            text-align: center;  
        }  

        html,  
        body,  
        .mui-content {  
            height: 100%;  
            width: 100%;  
            margin: 0;  
            padding: 0;  
        }  

        .fbt {  
            color: #0E76E1;  
            width: 50%;  
            background-color: #ffffff;  
            float: left;  
            line-height: 44px;  
            text-align: center;  
        }  
    </style>  
</head>  

<body>  
    <header class="mui-bar mui-bar-nav">  
        <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
        <h1 class="mui-title">扫一扫</h1>  
        <span class="mui-icon mui-icon-spinner-cycle mui-spin mui-pull-right" id="turnTheLight"></span>  
    </header>  
    <div class="mui-content">  
        <div id="bcid">  
            <!--盛放扫描控件的div-->  
        </div>  
        <!--<div class="mui-bar mui-bar-footer" style="padding: 0px;">  
            <div class="fbt" onclick="scanPicture();">从相册选择二维码</div>  
            <div class="fbt mui-action-back">取  消</div>  
        </div>-->  
    </div>  
    <script src="js/mui.min.js"></script>  
    <script type="text/javascript" src="js/app.js"></script>  
    <script>  
        (function($, doc) {  
            $.init();  
            var schoolId;  
            var old_back = mui.back;  
            var height = window.innerHeight + 'px'; //获取页面实际高度    
            var width = window.innerWidth + 'px';  
            var bcid = document.getElementById("bcid");  
            bcid.style.height = height;  
            bcid.style.width = width;  
            var scan = null; //扫描对象  
            window.addEventListener("show", function() {  

                setTimeout(function() {  
                    if(scan) {  
                        scan.start();  
                    } else {  
                        startRecognize();  
                    }  
                }, 500);  
            });  

            $.plusReady(function() {  

            });  
            //              mui.back = function() {  
            //                  if(scan) {  
            //                      scan.cancel();  
            //                      scan.close();  
            //                  }  
            //                  old_back();  
            //              };  

            function startRecognize() { //开启扫描  
                try {  
                    var filter;  
                    //自定义的扫描控件样式    
                    var styles = {  
                        frameColor: "#29E52C",  
                        scanbarColor: "#29E52C",  
                        background: ""  
                    }  
                    //扫描控件构造    
                    scan = new plus.barcode.Barcode('bcid', filter, styles);  
                    scan.onmarked = onmarked;  
                    scan.onerror = onerror; //扫描错误  
                    scan.start();  
                    //打开关闭闪光灯处理    
                    var flag = false;  
                    document.getElementById("turnTheLight").addEventListener('tap', function() {  
                        if(flag == false) {  
                            scan.setFlash(true);  
                            flag = true;  
                        } else {  
                            scan.setFlash(false);  
                            flag = false;  
                        }  
                    });  
                } catch(e) {  
                    alert("出现错误啦:\n" + e);  
                }  
            };  

            function onerror(e) { //错误弹框  
                alert(e);  
            };  

            function onmarked(type, result) { //这个是扫描二维码的回调函数,type是扫描二维码回调的类型  
                var text = '';  
                switch(type) { //QR,EAN13,EAN8都是二维码的一种编码格式,result是返回的结果  
                    case plus.barcode.QR:  
                        text = 'QR: ';  
                        break;  
                    case plus.barcode.EAN13:  
                        text = 'EAN13: ';  
                        break;  
                    case plus.barcode.EAN8:  
                        text = 'EAN8: ';  
                        break;  
                }  
                //                  alert(text + " : " + result);  
                //                  GetQueryString(result,"id");  

                var urlPar = result.substr(result.indexOf("?") + 1);  
                var codeId = GetQueryString(urlPar, "id");  
                schoolId = GetQueryString(urlPar, "schoolnumber");  
                getQRCodeState(codeId);  
            };  
            /**  
             * 查询扫描的二维码状态  
             * @param {Object} codeId  
             */  
            function getQRCodeState(codeId) {  
                $.ajax({  
                    type: "post",  
                    url: "http://139.199.69.199:8046/services/AppService.asmx/getQRCodeState",  
                    async: true,  
                    dataType: 'json', //服务器返回json格式数据  
                    headers: {  
                        'Content-Type': 'application/json'  
                    },  
                    data: JSON.stringify({  
                        id: codeId  
                    }),  
                    success: function(data) {  
                        var obj = JSON.parse(data.d);  
                        var item;  
                        if(obj.data != null) { //在服务器中存在此二维码  
                            if("0" == obj.data.STATE) { //等于0是未激活  
                                if(mui.os.ios) {  
                                    item = ['取消', '激活'];  
                                } else {  
                                    item = ['取消', '', '激活'];  
                                }  
                                mui.confirm('该二维码尚未激活,去激活!', '提示', item, function(e) {  
                                    switch(item[e.index]) {  
                                        case '取消':  
                                            old_back();  
                                            break;  
                                        case '激活':  
                                            $.openWindow({  
                                                url: 'addInfo.html',  
                                                id: 'addInfo',  
                                                styles: {  
                                                    titleNView: {  
                                                        autoBackButton: true,  
                                                        titleText: '激活二维码'  
                                                    }  
                                                },  
                                                extras: {  
                                                    'codeId': codeId,  
                                                    'schoolId': schoolId  
                                                }  
                                            });  
                                            //activateQRCode(app.getUser().ACCOUNT, codeId);  
                                            break;  
                                    }  
                                }, '')  
                            } else {  
                                if(mui.os.ios) {  
                                    item = ['取消', '确认'];  
                                } else {  
                                    item = ['取消', '', '确认'];  
                                }  
                                mui.confirm('抱歉,该二维码已经被激活过!', '提示', item, function(e) {  
                                    switch(item[e.index]) {  
                                        case '取消':  
                                            old_back();  
                                            break;  
                                        case '确认':  
                                            scan.start();  
                                            break;  
                                    }  
                                }, '');  
                            }  
                        } else { //未知  
                            if(mui.os.ios) {  
                                item = ['取消', '确认'];  
                            } else {  
                                item = ['取消', '', '确认'];  
                            }  
                            mui.confirm('服务器未找到此二维码', '提示', item, function(e) {  
                                switch(item[e.index]) {  
                                    case '取消':  
                                        old_back();  
                                        break;  
                                    case '确认':  
                                        scan.start();  
                                        break;  
                                }  
                            }, '')  
                        }  
                    },  
                    error: function(xhr, type, errorThrown) {  
                        alert("错误:" + type);  
                        scan.start();  
                    }  
                });  
            };  
            /**  
             * 激活二维码  
             * @param {Object} userId  
             * @param {Object} codeId  
             */  
            function activateQRCode(userId, codeId) {  
                mui.ajax('http://139.199.69.199:8046/services/AppService.asmx/ActivateQRCode', {  
                    data: JSON.stringify({  
                        ID: codeId,  
                        ACCOUNT: userId  
                    }),  
                    dataType: 'json', //服务器返回json格式数据  
                    type: 'post', //HTTP请求类型  
                    timeout: 10000, //超时时间设置为10秒;  
                    headers: {  
                        'Content-Type': 'application/json'  
                    },  
                    success: function(data) {  
                        var item;  
                        if(JSON.parse(data.d).flag) {  
                            mui.confirm('您的二维码已激活成功!', '提示', ['确认'], function(e) {  
                                old_back();  
                            }, '')  
                        } else {  
                            if(mui.os.ios) {  
                                item = ['取消', '重试'];  
                            } else {  
                                item = ['取消', '', '重试'];  
                            }  
                            mui.confirm('激活失败,请重试!', '提示', item, function(e) {  
                                switch(item[e.index]) {  
                                    case '取消':  
                                        old_back();  
                                        break;  
                                    case '重试':  
                                        scan.start();  
                                        break;  
                                }  
                            }, '')  
                        }  
                    },  
                    error: function(xhr, type, errorThrown) {  
                        alert(type);  
                    }  
                });  
            };  

            // 从相册中选择二维码图片     
            function scanPicture() { //可以直接识别二维码图片  
                plus.gallery.pick(function(path) {  
                    plus.barcode.scan(path, onmarked, function(error) {  
                        plus.nativeUI.alert("无法识别此图片");  
                    });  
                }, function(err) {  
                    plus.nativeUI.alert("Failed: " + err.message);  
                });  
            };  

            function GetQueryString(url, name) {  
                var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //寻找&+url参数名=参数值+&.&可以不存在  

                var r = url.match(reg);  
                if(r != null) return unescape(r[2]);  
                return null;  
            };  
        }(mui, document));  
    </script>  
</body>  

</html>
二维码扫描框看不见。在有的android手机上是好的,在酷派Y71-511上不行,在Iphone 6s上面也是可以的。

xiaotutu6000

xiaotutu6000

你的代码没有研究透彻吧。我这边可以哦。在官方的例子上改造哦

  • 3***@qq.com

    麻烦指正一下,在酷派上面确实不行,二维码扫描框看不见。

    2018-05-16 11:35

  • xiaotutu6000

    你其他机型都正常么?我这边没有酷派机器

    2018-05-16 11:36

  • 3***@qq.com

    回复 xiaotutu6000:用华为的是正常的,酷派Y71-511就不行

    2018-05-16 11:37

  • xiaotutu6000

    哦,那就没有办法了,我身边没有酷派机器。可以给你一个思路,同套代码,在不同机型不行的,可以考虑下是不是异步问题。或者你一步一步调试。应该是可以找出来问题的。

    2018-05-16 11:40

  • 3***@qq.com

    回复 xiaotutu6000:应该不是异步的问题,这个二维码扫描界面是做了预加载处理。

    2018-05-16 11:42

  • xiaotutu6000

    回复 3***@qq.com:你可以切割代码调试下。我看你那个截图中,连摄像头都出来,只是丑了点。应该CSS控制没有按正常的顺序走导致的。

    2018-05-16 11:45

1***@qq.com

1***@qq.com

mui.later(function(){
//创建控件
},500);

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