最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2移動端使用vue-qrcode-reader實現(xiàn)掃一掃功能的步驟

 更新時間:2023年06月19日 15:38:08   作者:Lizy!  
最近在使用vue開發(fā)的h5移動端想要實現(xiàn)一個調(diào)用攝像頭掃描二維碼的功能,所以下面這篇文章主要給大家介紹了關(guān)于vue2移動端使用vue-qrcode-reader實現(xiàn)掃一掃功能的相關(guān)資料,需要的朋友可以參考下

移動端實現(xiàn)掃一掃   掃碼功能

第一種:如果是用uniapp開發(fā)  可以直接使用uni的語法 并且兼容多端

第二種:如果是開發(fā)瀏覽器的網(wǎng)頁,基于微信的話,也可以用微信的weixin-js-sdk

        具體流程參考官網(wǎng):概述 | 微信開放文檔

第三種:用第三方vue-qrcode-reader實現(xiàn)掃一掃功能,

        詳細(xì)流程參考官網(wǎng):Simple | Vue Qrcode Reader

以下內(nèi)容為用vue-qrcode-reader實現(xiàn)掃一掃功能步驟

1.下載vue-qrcode-reader依賴

//   npm 下載

npm install --save vue-qecode-reader

//   cnpm 下載

cnpm install --save vue-qrcode-reader

 2.此次流程是在A頁面添加掃一掃button,然后點擊跳轉(zhuǎn)到B頁面,然后掃一掃寫在B頁面,進入B頁面初始化,然后同意使用相機,在掃描到二維碼后攜帶掃到的內(nèi)容跳轉(zhuǎn)到A頁面

代碼如下

<template>
    <div class="saoma">
        <qrcode-stream  @decode="onDecode" @init="onInit" style="height: 100vh;width:100vw">
            <div>
                <div class="qr-scanner">
                <div class="box">
                    <div class="line"></div>
                    <div class="angle"></div>
                </div>
                </div>
            </div>
        </qrcode-stream>
    </div>
</template>
<script>
    import {
        QrcodeStream
    } from 'vue-qrcode-reader';
    export default {
        components: {
            QrcodeStream
        },
        data() {
            return {
                result: '', // 掃碼結(jié)果信息
                error: '' // 錯誤信息
            }
        },
        methods: {
            onDecode(result) {
                if(result){
                    this.$router.push({
                        path:'/',
                        query: {
                            code:result,
                        }
                    })
                }
            },
            async onInit(promise) {
                try {
                    await promise
                } catch (error) {
                    if (error.name === 'NotAllowedError') {
                        window.alert('您需要授予相機訪問權(quán)限')
                        this.$router.push({path:'/'})
                    } else if (error.name === 'NotFoundError') {
                        this.$router.push({path:'/'})
                        window.alert('這個設(shè)備上沒有攝像頭')
                    } else if (error.name === 'NotSupportedError') {
                        this.$router.push({path:'/'})
                        window.alert('所需的安全上下文(HTTPS、本地主機)')
                    } else if (error.name === 'NotReadableError') {
                        this.$router.push({path:'/'})
                        window.alert('相機被占用')
                    } else if (error.name === 'OverconstrainedError') {
                        this.$router.push({path:'/'})
                        window.alert('安裝攝像頭不合適')
                    } else if (error.name === 'StreamApiNotSupportedError') {
                        this.$router.push({path:'/'})
                        window.alert('此瀏覽器不支持流API')
                    }
                }
            },
        }
    }
</script>
<style scoped>
    .saoma {
        width: 100vw;
        height: 100vh;
    }
    .qr-scanner {
    background-image:
        linear-gradient(0deg,
            transparent 24%,
            rgba(32, 255, 77, 0.1) 25%,
            rgba(32, 255, 77, 0.1) 26%,
            transparent 27%,
            transparent 74%,
            rgba(32, 255, 77, 0.1) 75%,
            rgba(32, 255, 77, 0.1) 76%,
            transparent 77%,
            transparent),
        linear-gradient(90deg,
            transparent 24%,
            rgba(32, 255, 77, 0.1) 25%,
            rgba(32, 255, 77, 0.1) 26%,
            transparent 27%,
            transparent 74%,
            rgba(32, 255, 77, 0.1) 75%,
            rgba(32, 255, 77, 0.1) 76%,
            transparent 77%,
            transparent);
        background-size: 3rem 3rem;
        background-position: -1rem -1rem;
        width: 100%;
        /* height: 100%; */
        height: 100vh;
        position: relative;
        background-color: #1110;
      /* background-color: #111; */
    }
    .qr-scanner .box {
        width: 213px;
        height: 213px;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        overflow: hidden;
        border: 0.1rem solid rgba(0, 255, 51, 0.2);
        /* background: url('http://resource.beige.world/imgs/gongconghao.png') no-repeat center center; */
    }
    .qr-scanner .line {
        height: calc(100% - 2px);
        width: 100%;
        background: linear-gradient(180deg, rgba(0, 255, 51, 0) 43%, #00ff33 211%);
        border-bottom: 3px solid #00ff33;
        transform: translateY(-100%);
        animation: radar-beam 2s infinite alternate;
        animation-timing-function: cubic-bezier(0.53, 0, 0.43, 0.99);
        animation-delay: 1.4s;
    }
    .qr-scanner .box:after,
    .qr-scanner .box:before,
    .qr-scanner .angle:after,
    .qr-scanner .angle:before {
        content: '';
        display: block;
        position: absolute;
        width: 3vw;
        height: 3vw;
        border: 0.2rem solid transparent;
    }
    .qr-scanner .box:after,
    .qr-scanner .box:before {
        top: 0;
        border-top-color: #00ff33;
    }
    .qr-scanner .angle:after,
    .qr-scanner .angle:before {
        bottom: 0;
        border-bottom-color: #00ff33;
    }
    .qr-scanner .box:before,
    .qr-scanner .angle:before {
        left: 0;
        border-left-color: #00ff33;
    }
    .qr-scanner .box:after,
    .qr-scanner .angle:after {
        right: 0;
        border-right-color: #00ff33;
    }
    @keyframes radar-beam {
        0% {
            transform: translateY(-100%);
        }
        100% {
            transform: translateY(0);
        }
    }
</style>

以上內(nèi)容即為使用vue-qrcode-reader實現(xiàn)掃一掃功能的流程

可以直接復(fù)制粘貼使用哦

總結(jié)

到此這篇關(guān)于vue2移動端使用vue-qrcode-reader實現(xiàn)掃一掃功能的文章就介紹到這了,更多相關(guān)vue2實現(xiàn)掃一掃功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 全面解析vue中的數(shù)據(jù)雙向綁定

    全面解析vue中的數(shù)據(jù)雙向綁定

    這篇文章主要介紹了vue中的數(shù)據(jù)雙向綁定問題,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • 詳解Vue2如何監(jiān)聽數(shù)組的變化

    詳解Vue2如何監(jiān)聽數(shù)組的變化

    這篇文章主要來和大家詳細(xì)探討一下Vue2中是如何監(jiān)聽數(shù)組的變化的,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    這篇文章主要介紹了詳解如何創(chuàng)建并發(fā)布一個vue組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue項目配置在局域網(wǎng)下訪問方式

    Vue項目配置在局域網(wǎng)下訪問方式

    這篇文章主要介紹了Vue項目配置在局域網(wǎng)下訪問方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue3的動態(tài)組件使用場景與示例

    Vue3的動態(tài)組件使用場景與示例

    在 Vue 中,組件是構(gòu)建用戶界面的基礎(chǔ),而動態(tài)組件的引入,更是讓開發(fā)者能夠在應(yīng)用中實現(xiàn)靈活、可重用的視圖邏輯,本文將探討 Vue 3 中的動態(tài)組件,分享其使用場景,并通過示例代碼來說明其操作方法,需要的朋友可以參考下
    2025-01-01
  • 關(guān)閉eslint檢查和ts檢查的簡單步驟記錄

    關(guān)閉eslint檢查和ts檢查的簡單步驟記錄

    這篇文章主要給大家介紹了關(guān)于關(guān)閉eslint檢查和ts檢查的相關(guān)資料,eslint是一個JavaScript的校驗插件,通常用來校驗語法或代碼的書寫風(fēng)格,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • vue中實現(xiàn)點擊空白區(qū)域關(guān)閉彈窗的兩種方法

    vue中實現(xiàn)點擊空白區(qū)域關(guān)閉彈窗的兩種方法

    這篇文章主要介紹了vue中實現(xiàn)點擊空白區(qū)域關(guān)閉彈窗的兩種方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • Vue 項目中遇到的跨域問題及解決方法(后臺php)

    Vue 項目中遇到的跨域問題及解決方法(后臺php)

    這篇文章主要介紹了Vue 項目中遇到的跨域問題及解決方法(后臺php),前端采用vue框架,后臺php,具體解決方法,大家參考下本文
    2018-03-03
  • vue制作加載更多功能的正確打開方式

    vue制作加載更多功能的正確打開方式

    這篇文章是一篇Vue.js的教程,目標(biāo)在于用一種常見的業(yè)務(wù)場景——分頁/無限加載,以及編寫過程中自己的錯誤寫法,分享給大家,幫助讀者更好的理解Vue.js中的一些設(shè)計思想。
    2016-10-10
  • vant?toast?關(guān)閉棧溢出問題及解決

    vant?toast?關(guān)閉棧溢出問題及解決

    這篇文章主要介紹了vant?toast?關(guān)閉棧溢出問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

阜新市| 秦皇岛市| 衡南县| 旌德县| 普陀区| 阳高县| 佛坪县| 保定市| 随州市| 临桂县| 万盛区| 阜康市| 麦盖提县| 呼和浩特市| 焦作市| 德昌县| 天峻县| 铁力市| 万荣县| 阿合奇县| 城固县| 罗田县| 玉田县| 广平县| 昭平县| 许昌市| 河北省| 信宜市| 浑源县| 景德镇市| 汝阳县| 武山县| 贵港市| 朝阳市| 阳谷县| 平乡县| 建平县| 张家界市| 长乐市| 合江县| 洱源县|