ddddd

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)
            })
    })
}
温馨提示:

欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。

h5 扫码,条形码,二维码 zxing-js---相关文章


评论区

ddddd

程序员-学习的网站-想学习编程的码农可以进来看看

首页

视频教程

购物车

我的订单