为什么我的扫描二维码,扫描两三次就会死掉,不知道下面的代码有什么问题,这个是通用的弹出扫码页面
<!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>