vue项目使用html5+ barcode扫码在苹果遇到的问题以及自己的解决方法
之前在记录扫码 在安卓时,会出现黑屏,错位,闪退等等问题。解决方法在另一篇文章里 https://www.cnblogs.com/huzhuhua/p/11064764.html 。
当时以为 是解决了。后来打包到IOS上时也是 出现。原因是
let ws = plus.webview.create("./camera.html", "camera");
ws.show();
ws.addEventListener(
"loaded",
function() {
//页面加载完成后才显示
setTimeout(function() {
ws.show();
}, );
},
false
);
ws.addEventListener(
"close",
function() {
ws = null;
},
false
);
camera.html页面上
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>camera</title>
<style>
html,
body,
div,
span,
img {
margin: ;
padding: ;
} body {
background: #;
} .tips {
margin-top: %;
color: #fff;
text-align: center
} .action {
position: fixed;
z-index: ;
width: %;
left: ;
bottom: ; } .action .items {
display: flex;
justify-content: space-around;
background: rgba(, , , 0.35);
width: %;
padding: 4px;
margin: 4px auto; } .action .items .item {
flex-basis: 50px;
text-align: center; } .action .items img {
width: 27px;
}
</style>
</head> <body>
<div id="camera">
<div id="scan"></div>
<div class="tips">加载中...</div> <div class="action">
<div class="items">
<div class="item" onclick="openLight"><img src="./src/assets/img/png-60@3x.png"></div>
<div class="item" onclick="getPicture"><img src="./src/assets/img/png-59@3x.png"></div>
<!-- <div
class="item"
@click="showInput"
><img src="../assets/img/png-68@3x.png">
</div> -->
<div class="item" onclick="cancelScan"><img src="./src/assets/img/png-61@3x.png"></div>
<!-- <d class="item"><img src="../../assets/img/png-25@3x.png"></d -->
</div>
</div>
</div> </body>
<script> var isLight = false, scan = null;
// 打开闪光灯
function openLight() {
isLight = !isLight;
scan.setFlash(isLight);
} //创建扫描控件
function startRecognize() {
if (!window.plus) return;
scan = null;
scan = new plus.barcode.Barcode(
"scan",
[plus.barcode.QR, plus.barcode.EAN8, plus.barcode.EAN13],
{
frameColor: "#1294cb",
scanbarColor: "#1294cb",
top: "100px",
left: "0px",
width: "100%",
height: "500px",
position: "fixed"
}
);
// 条码识别成功
scan.onmarked = onmarked;
function onmarked(type, result, file) {
result = result.replace(/\n/g, "");
localStorage.setItem("cameraData", result);
let ws = plus.webview.getWebviewById("camera");
ws.close()
}
}
// //开始扫描
function startScan() {
if (!window.plus) return;
startRecognize(); //创建控件
setTimeout(() => {
scan.start();
}, );
}
// 取消扫描
function cancelScan() {
if (!window.plus) return;
plus.navigator.setStatusBarStyle("dark");
if (scan) {
scan.cancel(); //关闭扫描
scan.close(); //关闭条码识别控件
}
let ws = plus.webview.getWebviewById("camera");
ws.close()
}
// 从相册选取二维码相片
function getPicture() {
plus.gallery.pick(src => {
// scan.cancel(); //关闭扫描
plus.barcode.scan(
src,
(type, result) => {
scan.cancel(); //关闭扫描
scan.close();
localStorage.setItem("cameraData", result);
plus.navigator.setStatusBarStyle("dark");
let ws = plus.webview.getWebviewById("camera");
ws.close()
}
);
});
} window.onload = function () {
setTimeout(() => {
plus.navigator.setStatusBarStyle("dark");
startScan()
}, );
}
</script> </html>
这样算解决了。折腾了N久
vue项目使用html5+ barcode扫码在苹果遇到的问题以及自己的解决方法的更多相关文章
- 关于Android Studio3.2新建项目无法运行出现Failed to find Build Tools revision 28.0.3的解决方法
关于Android Studio3.2新建项目无法运行出现Failed to find Build Tools revision 28.0.3的解决方法 https://blog.csdn.net/h ...
- PC、h5项目接入第三方支付宝扫码登录、扫码付款
首先介绍一下pc项目接入支付宝扫码支付. 1.pc.移动接入支付宝扫码支付. 其实这个逻辑很简单,前端所需要处理的不是很多,后台会给一个连接,前端只需要将要支付的订单id拼接在这个连接上,然后打开跳转 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock
笔记 6.微信扫码登录回调本地域名映射工具Ngrock 简介:讲解微信扫码回调本地域名ngrock讲解 1.为什么要用这个,微信扫码需要配置回调,需要配置对应的域名 ...
- 微信支付之扫码支付开发:我遇到的坑及解决办法(附:Ecshop 微信支付插件)
前段时间帮一个朋友的基于ecshop开发的商城加入微信扫描支付功能,本以为是很简单的事儿——下载官方sdk或开发帮助文档,按着里面的做就ok了,谁知折腾了两三天的时间才算搞定,中间也带着疑问在网上找了 ...
- 在android源码环境下写上层应用的一个初步解决方法
在android源码环境下编写上层应用,一直以来我都觉得很麻烦.因为如果单纯将应用导入eclipse,那么framework层一些定制的API无法自动提示和补全,使用起来不太方便:如果将整个andro ...
- 项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved 解决方法
Error: The import javax.servlet cannot be resolved The import javax.servlet.http.HttpServletRequest ...
- QT项目升级(QT4.6.3到QT5.2)时,遇到的问题和解决方法
QT4升级到QT5修改: PC部分: [改QTDIR变量] 在project根文件夹下找到.user文件, 如InnoTabPlugin.vcxproj.user 改动指向你的QT5根文件夹: < ...
- (转)新建maven项目时报错Error:Maven Resources Compiler: Maven project configuration required for module 'XX'解决方法
转载地址:https://blog.csdn.net/qq784515681/article/details/85070195 在新建maven项目时,Problems中报错: Error:Maven ...
- vue项目条形码和二维码生成工具试用
项目开发需要,优惠券分不同类型,简单的使用id生成条形码供店铺使用,麻烦点的需要多个字段的就需要使用二维码来展示了,对应的效果如下 条形码(一维码)使用工具code128 需引入code128.js ...
随机推荐
- 15-C#笔记-结构体
示例: using System; using System.Text; struct Books { private string title; // 支持 public private strin ...
- 【java异常】Unexpected error occurred in scheduled task. java.lang.StackOverflowError: null
可能是栈溢出(StackOverFlow) 背景:我用定时器new东西 原因:频率太快了好像!
- CCF虚拟现实与可视化技术专委会丨面向增强现实的可视计算技术研究进展概述
https://mp.weixin.qq.com/s/I-rNwgXHEtwgdpkWzKtVXw 摘要 新一代增强现实技术需要依赖可视计算理论与方法解决大尺度复杂环境下的场景建模.内容生成.感知交互 ...
- UEditor在开发环境中正常运作,但是部署到Tomcat中却无法使用
背景 SpringBoot项目,在 JSP 中使用 UEditor 问题 UEditor 在开发环境中正常运作,但是导致部署到 Tomcat 中却无法使用 原因 在开发环境中,路径不够严谨,多 ...
- linux定时器的实现方法
Linux提供定时器机制,可以指定在未来的某个时刻发生某个事件,定时器的结构如下: struct timer_list { struct list_head list; unsigned long e ...
- dijkstra算法的堆优化
普通的dijkstra算法模板: //数据结构 int g[LEN][LEN]; //邻接矩阵 int vis[LEN]; //标记是否访问 int dist[LEN] //源点到各点的距离 fill ...
- json for modern c++(nlohmann json)使用小计
前言 一开始使用jsoncpp,但是jsoncpp已经不更新了,nlohmann还在更新,并且jsoncpp做过一次大的版本升级,导致api不兼容,以前使用过的工程代码不能很好的升级到新的版本,并且j ...
- List中的ArrayList和LinkedList源码分析
List是在面试中经常会问的一点,在我们面试中知道的仅仅是List是单列集合Collection下的一个实现类, List的实现接口又有几个,一个是ArrayList,还有一个是LinkedLis ...
- 使用 KVO 可能会拖慢启动速度
问题  在某一次启动速度优化中,发现最开始的某个 runLoop 中,一个runLoop 耗时很长.发现一个 KVO 变量的初始化消耗了13ms之久,这对启动速度是不可接受了. 源码分析 用 Ins ...
- CentOS 7.6 安装Python3.7.2 多版本共存
CentOS 7.6 默认安装了 Python 2.7.5 准备环境 yum install git gcc gcc-c++ make automake autoconf libtool pcre p ...