Salazar
Salazar
  • 发布:2017-06-15 11:37
  • 更新:2019-12-11 01:13
  • 阅读:6111

二维码扫描第一次打开正常,当扫描出结果并跳转到新界面,然后返回就黑屏了

分类:HTML5+

我尝试在新界面监听物理返回按键,然后手动通过mui.openWindow跳转到二维码扫描界面,并添加createNew:true属性,但是无效,请问这种问题该怎么解决?
效果:

代码:

<!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" />  
        <script src="js/mui.min.js"></script>  
        <link href="css/mui.min.css" rel="stylesheet" />  
        <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;  
            }  
        </style>  
    </head>  

    <body style="background-color: #000000;">  
        <header class="mui-bar mui-bar-nav myColor" style="padding-top: 10px;">  
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" style="color: #ffffff;"></a>  
            <h1 id="title" class="mui-title" style="color: #ffffff;">二维码扫描</h1>  
        </header>  

        <div class="mui-content">  
            <div id="bcid">  
                <div style="height:40%"></div>  
                <p class="tip">Loading...</p>  
            </div>  
        </div>  

        <script type="text/javascript" src="../js/common.js"></script>  
        <script type="text/javascript">  
            mui.init();  
            var sData = null;  
            var sTitle = null;  
            var currentWebview = null,  
                opener = null;  
            var scan = null,  
                domready = false;  
            mui.plusReady(function() {  
                //获取传递过来的值,设置顶部标题  
                sData = plus.webview.currentWebview();  
                sTitle = sData.sendTitle;  
                var title = document.getElementById("title");  
                title.innerHTML = sTitle;  
            });  
            // 开始扫描,H5 plus事件处理   
            function startScan() {  
                if(currentWebview || !window.plus || !domready) {  
                    return;  
                }  
                // 获取窗口对象   
                currentWebview = plus.webview.currentWebview();  
                opener = currentWebview.opener();  
                // 开始扫描   
                currentWebview.addEventListener('show', function() {  
                    scan = new plus.barcode.Barcode('bcid');  
                    scan.onmarked = onmarked;  
                    scan.start({  
                        conserve: true,  
                        filename: '_doc/barcode/'  
                    });  
                }, false);  
                // 显示页面并关闭等待框   
                currentWebview.show('pop-in');  

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

            // 二维码扫描成功的回调函数  
            function onmarked(type, result, file) {  
                console.log("0956type=" + type + ",result=" + result + ",file=" + file);  
                //跳转到单据信息界面  
                mui.openWindow({  
                    url: "bills-info.html",  
                    id: "bills-info",  
                    extras: {  
                        result: result,  
                        sendTitle: sTitle,  
                        type: sData.type  
                    },  
                    waiting: {  
                        title: '正在加载...', //等待对话框上显示的提示内容  
                    }  
                });  
                //              if(type==0){  
                //                  mui.toast("扫描结果:"+result);  
                //              }  
                //              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;  
                //              }  
                //分析扫描结果:是URL就跳转 ,不是就提示   
                //              if(result.indexOf('http://') == 0 || result.indexOf('https://') == 0) {  
                //                  plus.nativeUI.confirm(result, function(i) {  
                //                      if(i.index == 0) {  
                //                          mui.toast("11"+result);  
                //                      } else {  
                //                          mui.toast("22"+result);  
                //                      }  
                //                  }, '', ['打开d', '取消q']);  
                //              } else {  
                //                  mui.toast("33"+result);  
                //              }  
            }  
        </script>  

    </body>  

</html>
2017-06-15 11:37 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

提供一个可以重现问题的demo,并描述清楚操作步骤。

  • Salazar (作者)

    这个已经是完整的html文件了,是可以扫描二维码的,就是界面跳转返回后会出现黑屏的现象,但是控制台又没有任何错误提示

    2017-06-15 20:09

kay

kay

我也遇到这个问题了,当在二维码页面添加可以跳出的按钮后(打开新页面),点击来到新的页面,然后再次返回的时候,不是出现黑屏就是提示未授权,希望官方能解决这个问题!必须退出到二维码的上一页,然后再重新点击进入二维码页面才行……

雪之梦技术驿站

雪之梦技术驿站 - 你在互联网的路上匆匆而来,雪之梦技术驿站助你满载而去

1231312312312

1231312312312

我发现个解决方案,目前自己手头的机器好使,红色部分为关键代码

7***@qq.com

7***@qq.com

实际上官方提供的demo就有相同的问题;

上海Allen

上海Allen

这个问题怎么解决,我也碰到了,找了一圈来到了这里,
也是扫描后跳转到新页面,在返回,就不行了,黑屏

  • lam

    扫完后就关闭掉

    2017-09-21 11:48

  • Salazar (作者)

    扫描后你跳转到新页面添加一个createNew:true的属性,类似这样: mui.openWindow({

    url: "new_calendar.html",

    createNew:true

    });

    然后你在二维码扫描界面的前一个页面跳转时也添加createNew:true,扫描完后记得close

    2017-09-21 11:52

  • 上海Allen

    我用的是plus.webview.create,我自己试了试,我在这句之前加上这个,在我手机上是好的,不知道是不是解决了问题:代码

    plus.webview.currentWebview().hide();

    var cw = plus.webview.create("/html/shipping/dr省略

    hide放在下面就不行

    2017-09-21 15:36

  • 1***@qq.com

    回复 上海Allen:是的,在官方demo中加入这句就能第二次进入正常扫码了,感谢!

    2019-03-20 02:31

  • 叶南淮

    回复 1***@qq.com: 我用的官方demo,创建新界面用的mui.openwindow,在这句上面加上hide,页面直接不跳转了

    2019-07-09 15:07

  • 叶南淮

    回复 叶南淮: 依然存在多次之后卡住

    2019-07-09 15:51

Salazar

Salazar (作者)

扫描后你跳转到新页面添加一个createNew:true的属性,类似这样:

                                mui.openWindow({  
                                    url: "new_calendar.html",  
                                    createNew:true  
                                });

然后你在二维码扫描界面的前一个页面跳转时也添加createNew:true

  • 叶南淮

    我还是不行,主页入口和新页面都加了createnew,不过主页上是用plus.webview.create

    2019-07-09 11:05

  • 叶南淮

    回复 叶南淮: 换成了mui.openwindow依然不行

    2019-07-09 15:51

sjc

sjc

感恩,解决了,谢谢楼主

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