plus.barcode.Barcode 自定义扫码

参考官方文档

源码下载
提取码:3l5w

效果如下:

核心代码如下(可下载源码详细参考)

test1.html

<!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>自定义扫码</title>
		<link rel="stylesheet" href="./css/common.css" type="text/css" charset="utf-8" />
		<script type="text/javascript" src="./js/common.js"></script>
		
		<script type="text/javascript">
			
			//系统栏颜色
			if(window.plus){
				plus.navigator.setStatusBarBackground("#009DE2");
			}else{
				document.addEventListener("plusready",function(){
					plus.navigator.setStatusBarBackground("#009DE2");
				},false);
			}
			
			// 打开自定义扫描界面 
			function openBarcodeCustom() {
				createWithoutTitle('test2.html', {
					titleNView: {
						type: 'float',
						backgroundColor: '#009DE2',
						titleText: '扫一扫',
						titleColor: '#FFFFFF',
						autoBackButton: true
					}
				});
			}
			
			//扫描成功后回调
			function scaned(t, r, f){
				alert("二维码类型:"+t+"\n扫描结果:"+r+"\n文件路径:"+f);
			}
		</script>
	
	</head>
	<body>
		<div class="button" onclick="openBarcodeCustom()">扫一扫(自定义)</div>
	</body>
</html>

test2.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
		<meta name="HandheldFriendly" content="true" />
		<meta name="MobileOptimized" content="320" />
		<title>自定义扫码</title>
		<link rel="stylesheet" href="./css/common.css" type="text/css" charset="utf-8" />
		<script type="text/javascript" src="./js/common.js"></script>
		<style type="text/css">
			#bcid {
				width: 100%;
				position: fixed;
				top: 0px;
				bottom: 0px;
				text-align: center;
			}
		
			.tip {
				color: #FFFFFF;
				font-weight: bold;
				text-shadow: 0px -1px #103E5C;
			}
		</style>
		
		<script type="text/javascript">
			var ws = null;
			var scan = null;
			// H5 plus事件处理
			function plusReady() {
				// 获取窗口对象
				ws = plus.webview.currentWebview();
				nv = ws.getTitleNView();
				// 开始扫描
				ws.addEventListener('show', function() {
					scan = new plus.barcode.Barcode('bcid', [plus.barcode.QR, plus.barcode.EAN8, plus.barcode.EAN13], {
						frameColor: '#009DE2',
						scanbarColor: '#009DE2',
					});
					scan.onmarked = onmarked;
					scan.start({
						conserve: true,
						filename: '_doc/barcode/'
					});
					createSubview();
				}, false);
				// 显示页面并关闭等待框
				ws.show('pop-in');
			}
			document.addEventListener('plusready', 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;
				}
				result = result.replace(/\r\n/g, '');
				ws.opener().evalJS("scaned('" + type + "','" + result + "','" + file + "');");
				back();
			}
			// 创建子窗口
			var view = null;

			function createSubview() {
				view = new plus.nativeObj.View('nbutton', {
					bottom: '28%',
					left: '30%',
					width: '40%',
					height: '44px'
				}, [{
					tag: 'font',
					id: 'text',
					text: '请扫描二维码',
					textStyles: {
						color: '#FFFFFF'
					}
				}]);
				ws.append(view);
			}
		</script>
		
	</head>
	<body style="background-color:#000000;">
		<div id="bcid">
			<div style="height:40%"></div>
			<p class="tip">...载入中...</p>
		</div>
	</body>
</html>

你可能感兴趣的:(H5,前端)