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

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

分类: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

感恩,解决了,谢谢楼主

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