h5 扫码,条形码,二维码 zxing-js
作者:程序员11 时间:2023-05-17 人气:486 QQ交流群\邮箱:1003265987@qq.com
h5 扫码,条形码,二维码zxing-js
要展示的内容
demo地址:https://gitcode.net/mirrors/zxing-js/library?utm_source=csdn_github_accelerator
链接:https://blog.csdn.net/m0_54853503/article/details/123099831
index.min.js链接:https://unpkg.com/@zxing/library@latest/umd/index.min.js
html 方法
<div id="zxingLibrary"> <video id="video" width="300" height="200" style="border: 1px solid gray"></video> <div id="sourceSelectPanel" style="display:none;"> <label for="sourceSelect">设置摄像头:</label> <select id="sourceSelect" style="max-width:400px"> </select> <label id="cancelPanel">取消</label> </div> </div> <script type="text/javascript" src="/dist/js/zxing/index.min.js"></script> <script src="/dist/js/sealCircle.js"></script> <script> function fn() { return SealCircle } fn().zxingFun(fn().callback) </script>
js 里面的方法
zxingFun(callback){ window.addEventListener('load', function () { let selectedDeviceId; const codeReader = new ZXing.BrowserMultiFormatReader() console.log('ZXing code reader initialized') codeReader.listVideoInputDevices() .then((videoInputDevices) => { const sourceSelect = document.getElementById('sourceSelect') selectedDeviceId = videoInputDevices[0].deviceId if (videoInputDevices.length >= 1) { videoInputDevices.forEach((element) => { const sourceOption = document.createElement('option') sourceOption.text = element.label sourceOption.value = element.deviceId sourceSelect.appendChild(sourceOption) }) // sourceSelect.onchange = () => { // selectedDeviceId = sourceSelect.value; // }; const sourceSelectPanel = document.getElementById('sourceSelectPanel') sourceSelectPanel.style.display = 'block' $(document).on("change","#sourceSelect", function() {//方法二,这是一个事件委托方法,是给页面开始加载欠就存在的元素加 selectedDeviceId = sourceSelect.value; const zxingLibrary = document.getElementById('zxingLibrary') zxingLibrary.style.zIndex = -1 }); } // let startButton = null // let batchNumber = null // if(document.body.contains(document.getElementById("startButton"))) { // startButton = document.getElementById('startButton') // } // if(document.body.contains(document.getElementById("batchNumber"))) { // batchNumber = document.getElementById('batchNumber') // } // // startButton.addEventListener('click', () => { // const zxingLibrary = document.getElementById('zxingLibrary') // zxingLibrary.style.zIndex = 1000 // codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => { // if (result) { // console.log(result) // codeReader.stopStreams() // zxingLibrary.style.zIndex = -1 // let index = startButton.dataset.index // let name = startButton.attributes[1].nodeValue // // callback(result.text,index,name) // // document.getElementById('result').textContent = result.text // } // if (err && !(err instanceof ZXing.NotFoundException)) { // console.error(err) // // document.getElementById('result').textContent = err // } // }) // console.log(`Started continous decode from camera with id ${selectedDeviceId}`) // }) $("body").delegate("#startButton","click", function() {//方法二,这是一个事件委托方法,是给页面开始加载欠就存在的元素加 console.log('startButton',selectedDeviceId) let that = this const zxingLibrary = document.getElementById('zxingLibrary') zxingLibrary.style.zIndex = 1000 codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => { if (result) { console.log(result) codeReader.stopStreams() zxingLibrary.style.zIndex = -1 let index = that.dataset.index let name = that.attributes[1].nodeValue callback(result.text,index,name) // document.getElementById('result').textContent = result.text } if (err && !(err instanceof ZXing.NotFoundException)) { console.error(err) // document.getElementById('result').textContent = err } }) console.log(`Started continous decode from camera with id ${selectedDeviceId}`) }); // batchNumber.addEventListener('click', () => { // const zxingLibrary = document.getElementById('zxingLibrary') // zxingLibrary.style.zIndex = 1000 // codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => { // if (result) { // console.log(result) // codeReader.stopStreams() // zxingLibrary.style.zIndex = -1 // let index = batchNumber.dataset.index // let name = batchNumber.attributes[1].nodeValue // callback(result.text,index,name) // // document.getElementById('result').textContent = result.text // } // if (err && !(err instanceof ZXing.NotFoundException)) { // console.error(err) // // document.getElementById('result').textContent = err // } // }) // console.log(`Started continous decode from camera with id ${selectedDeviceId}`) // }) $("body").delegate("#batchNumber","click", function() {//方法二,这是一个事件委托方法,是给页面开始加载欠就存在的元素加 console.log('batchNumber',selectedDeviceId) let that = this const zxingLibrary = document.getElementById('zxingLibrary') zxingLibrary.style.zIndex = 1000 codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => { if (result) { console.log(result) codeReader.stopStreams() zxingLibrary.style.zIndex = -1 let index = that.dataset.index let name = that.attributes[1].nodeValue callback(result.text,index,name) // document.getElementById('result').textContent = result.text } if (err && !(err instanceof ZXing.NotFoundException)) { console.error(err) // document.getElementById('result').textContent = err } }) console.log(`Started continous decode from camera with id ${selectedDeviceId}`) }); // document.getElementById('resetButton').addEventListener('click', () => { // codeReader.reset() // // document.getElementById('result').textContent = ''; // // console.log('Reset.') // }) $("body").delegate("#cancelPanel","click", function() {//方法二,这是一个事件委托方法,是给页面开始加载欠就存在的元素加 codeReader.stopStreams() const zxingLibrary = document.getElementById('zxingLibrary') zxingLibrary.style.zIndex = -1 }); }) .catch((err) => { console.error(err) }) }) }
温馨提示:
欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。
HTML5-热门文章
活跃用户












