JS+jQuery+qrcode.js實現前端生成二維碼

2021-01-17 易學長

為便於理解和演示,我做了一個簡單的HTML頁面(雖然我用的是Visual Studio創建的ASP頁面,但毫不影響你在其他地方用到本次演示的代碼)。實現過程是頁面打開時默認展示一個二維碼,用戶可以更改文本內容,更改生成二維碼的參數,例如尺寸、前景色、背景色等,點擊【生成二維碼】按鈕即可在下方生成一個二維碼,用手機微信或者QQ、百度等都可以識別輸入的內容,當輸入網址時還可以直接跳轉到網站頁面。下圖為效果樣式。

var qrcode = new QRCode(DOM, {    text: "http://jindo.dev.naver.com/collie",    width: 128,    height: 128,    colorDark : "#000000",    colorLight : "#ffffff",    correctLevel : QRCode.CorrectLevel.H});

注釋:

DOM:二維碼生成後放在該容器裡面,例如一個DIV

text:要生成二維碼的文本,可以是文字、數字、字母、網址等

width:二維碼的寬度

height:二維碼的高度

colorDark :二維碼淺色部分顏色

colorLight:二維碼深色部分顏色

correctLevel:二維碼識別等級,共分為 L : 1, M : 0, Q : 3, H : 2等

var qrcode = new QRCode(document.getElementById('qrcode'), {            text: document.getElementById('nr').value,            width: document.getElementById('cc').value,            height: document.getElementById('cc').value,            colorDark: document.getElementById('bjs').value,            colorLight: document.getElementById('qjs').value,            correctLevel: QRCode.CorrectLevel.L        });

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="createQRCode.Index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title>生成二維碼演示案例</title></head><body> <h1>生成二維碼演示案例</h1> <hr /> <div id="Text"> <textarea name="reworkmes" maxlength="300" id="nr">請輸入內容!</textarea> </div> <table> <tr> <td class="title">尺寸:</td> <td> <select id="cc" class="texts"> <option value="100">100×100px</option> <option value="200">200×200px</option> <option value="400">400×400px</option> <option value="600">600×600px</option> <option value="800">800×800px</option> <option value="1000">1000×1000px</option> </select> </td> <td></td> <td class="title">前景色:</td> <td> <input id="bjs" class="texts" type="text" value="#000000" /></td> <td></td> <td class="title">背景色:</td> <td> <input id="qjs" class="texts" type="text" value="#ffffff" /></td> </tr> <tr style="height: 35px;"> <td colspan="8" style="text-align: right;"> <input id="createQR" type="button" value="生 成 二 維 碼" /> </td> </tr> </table> <div id="qrcode"></div></body></html>

樣式代碼:

<style type="text/css">        h1 {            text-align: center;        }
hr { width: 60%; text-align: center; }
#Text { text-align: center; }
#nr { resize: none; width: 35%; height: 190px; padding-bottom: 0px; }
table { margin: 20px auto; }
td { width: 30px; }
.texts { width: 100px; }
.title { text-align: right; width: 70px; }
#qrcode { display: table-cell; text-align: center; }</style>

JavaScript代碼:

<script type="text/javascript">    $().ready(function () {        createQR();    })    function createQR() {        document.getElementById('qrcode').innerHTML = "";        var qrcode = new QRCode(document.getElementById('qrcode'), {            text: document.getElementById('nr').value,            width: document.getElementById('cc').value,            height: document.getElementById('cc').value,            colorDark: document.getElementById('bjs').value,            colorLight: document.getElementById('qjs').value,            correctLevel: QRCode.CorrectLevel.L        });        $('img').css({ "margin-left": -document.getElementById('cc').value / 2, "position": "absolute", "left": "50%" });    }    $(document).on('click', '#createQR', function () {        createQR();    })</script>

外部代碼引用:

<script src="qrcode.min.js"></script><script src="jquery.min.js"></script>

完整代碼內容:以下代碼為完整的ASP.Net頁面代碼內容,對以上組合還出現問題的話,可以直接拷貝下面代碼進入頁面。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="createQRCode.Index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>生成二維碼演示案例</title> <style type="text/css"> h1 { text-align: center; }
hr { width: 60%; text-align: center; }
#Text { text-align: center; }
#nr { resize: none; width: 35%; height: 190px; padding-bottom: 0px; }
table { margin: 20px auto; }
td { width: 30px; }
.texts { width: 100px; }
.title { text-align: right; width: 70px; }
#qrcode { display: table-cell; text-align: center; }</style></head><body> <h1>生成二維碼演示案例</h1> <hr /> <div id="Text"> <textarea name="reworkmes" maxlength="300" id="nr">請輸入內容!</textarea> </div> <table> <tr> <td class="title">尺寸:</td> <td> <select id="cc" class="texts"> <option value="100">100×100px</option> <option value="200">200×200px</option> <option value="400">400×400px</option> <option value="600">600×600px</option> <option value="800">800×800px</option> <option value="1000">1000×1000px</option> </select> </td> <td></td> <td class="title">前景色:</td> <td> <input id="bjs" class="texts" type="text" value="#000000" /></td> <td></td> <td class="title">背景色:</td> <td> <input id="qjs" class="texts" type="text" value="#ffffff" /></td> </tr> <tr style="height: 35px;"> <td colspan="8" style="text-align: right;"> <input id="createQR" type="button" value="生 成 二 維 碼" /> </td> </tr> </table> <div id="qrcode"></div></body></html><script src="qrcode.min.js"></script><script src="jquery.min.js"></script><script type="text/javascript"> $().ready(function () { createQR(); }) function createQR() { document.getElementById('qrcode').innerHTML = ""; var qrcode = new QRCode(document.getElementById('qrcode'), { text: document.getElementById('nr').value, width: document.getElementById('cc').value, height: document.getElementById('cc').value, colorDark: document.getElementById('bjs').value, colorLight: document.getElementById('qjs').value, correctLevel: QRCode.CorrectLevel.L }); $('img').css({ "margin-left": -document.getElementById('cc').value / 2, "position": "absolute", "left": "50%" }); } $(document).on('click', '#createQR', function () { createQR(); })</script>

當二維碼模糊或部分被遮擋模糊時需要設計到二維碼的識別糾錯等級,主要有correctLevel屬性決定二維碼的識別糾錯能力大小。高識別等級的二維碼可以識別更模糊的圖案,但底識別等級的二維碼能夠存儲更多的容量,所以,在不追求識別等級的情況下建議使用低等級識別度的二維碼,這樣生成的二維碼將會更加的簡潔,存儲更多的內容。見下表:

編碼模式L(低級)M(中級)Q(四分之一)H(高級)數字7089559639933057數字+字母4296339124201852位元組2953233116631273漢字181714351024784

若要獲取二維碼的圖片,可以先獲取其URL路徑,而後將URL賦值給img或者直接下載圖片到本地。案例如下:

    var canvas = qrcode.find('canvas').get(0);    var URLdata = canvas.toDataURL('image/jpg');

相關焦點

  • QR-Code Generator - 在線生成 QR-Code二維碼
    感謝eric4ever的投遞意中又發現了一個在線的 QR-Code Generator,可以為 URL 連結、文本、電話號碼和 SMS 短消息生成永久連結的QR Code 圖片和 HTML 代碼,並且可以選擇生成圖片的大小(四種類型:S、M、L、XL)。
  • 有趣的二維碼:用 MyQR 和 qrcode 製作二維碼
    通過QR碼中的三處定位圖案,可以幫助QR碼不受背景樣式的影響,實現快速穩定的讀取。2. MyQRMyQR可以生成常見的二維碼、藝術二維碼(黑白或彩色), 動態二維碼(黑白或彩色),安裝命令如下:生成二維碼代碼如下:if __name__ == '__main__': version, level, qr_name = myqr.run(
  • 20個使用WebGL和Three.js實現的網頁場景
    20個使用WebGL和Three.js實現的網頁場景 也許你們可能已經聽說過關於Three.js庫,Three.js是一個WebGL第三方庫,它能夠讓瀏覽器更加輕鬆的使用和實現3D效果,就打個
  • 使用reveal.js製作精美的網頁版PPT
    隨著 mac 的普及和動畫技術的發展,諸如Keynote、Prezi 等新秀陸續出現,它們不僅輕量且可以實現各種炫目的動畫效果.製作需要花費大量時間, 受平臺限制所以對於不熟悉PPT套路的技術工作者來說, 往往很難快速製作出精美的PPT.接下來我們再看看reveal.js的優勢.
  • 入門|egg.js 入門之egg-jwt
    }前端請求相匹配這裡只需要在前端的authorization欄位裡,添加相關的配置信息即可。這裡使用jsonwebtoken實現token相關認證機制。: 50012, msg: '您的帳號已在其他地方登錄' } } } else { ctx.body = { code: 50012, msg: '登錄狀態已過期' } } } else { ctx.body = { code: 50008, msg: '請登陸後再進行操作' } } }}// 解密,驗證function verifyToken
  • 走進二維碼(QR Code)的世界之引言
    做嵌入式這行的人一大特質就是喜歡研究各種技術本身,痞子衡早就對二維碼技術感興趣了。上期《嵌入式半月刊》的最後,痞子衡介紹了一個基於i.MXRT1050的掃碼支付終端(QM50),這是一個二維碼識別的應用。這個應用徹底激活了痞子衡對二維碼的好奇心,所以接下來痞子衡打算帶大家一起深入研究一下二維碼技術,從零開始認識二維碼,並最終在MCU上實現二維碼生成與識別的設計。
  • 從零做網站開發:基於Flask和JQuery實現表格管理平臺
    基於Flask框架和JQuery實現管理平臺網站的開發功能,我代碼編寫用了2天的時間 ,從零開始寫;又對具體實現流程,自己斷斷續續地整理總結了近半個月。從自我感覺來說,整個過程和結果的實現都讓我很滿意。
  • 前端工程化以及如何通過Node.js中babel來編譯es6模塊化代碼
    文件都是一個獨立的模塊.導入模塊成員使用 import 關鍵字暴露模塊成員使用 export 關鍵字之後就形成了前端工程化下面在:Node.js中通過babel體驗ES6模塊化1.首先電腦要安裝Node.js 環境必須v10以上的版本自帶npm包管理工具不需要再單獨安裝npm2.創建工程項目文件夾名稱不要使用中文 不能使用 babel 因為會和第三方模塊
  • web前端需要學習什麼?初級階段都要學什麼?
    網絡看到了很多詢問貼子,web前端需要學習什麼?自學要多久?要學習哪些技術?初級階段都要學習什麼?有什麼要求……也有很多朋友在網絡上自學的,也有參加網絡教學的,或者在去一些培訓學校參加培訓Web前端的,都會關心一個「web前端需要學習什麼」?
  • 手寫動態 3D 蛛網圖 | THREE.js
    最後選擇用 THREE.js 實現主體,用 DOM 實現控制項和交互。Hacking THREE—之前 ��解析《自然》 雜誌 150 年論文可視化作品 中,提到過這個庫。THREE.js 基於 WebGL,前身是廣泛用於 3D 遊戲的 OpenGL。
  • 程式設計師的樂趣,生成自定義二維碼,5行Python代碼就搞定
    隨著網際網路和智能行動裝置不斷普及,二維碼(Quick Response code)已經成為世界上應用最為廣泛的信息載體之一。生成二維碼的工具也層出不窮,但多數需要在線完成,並且生成的圖案也千篇一律,過於單調。那麼有沒有辦法實現自定義生成二維碼呢?
  • 分享幾個在線生成網址二維碼的API接口
    &nbsp; &nbsp; 現在很多大網站都有這樣的一個功能,使用手機掃描一下網頁上的二維碼便可快速在手機上訪問網站。想要實現這樣的功能其實很簡單,下面麥布分享幾個在線生成網址二維碼的API接口。
  • Web前端和後端有什麼區別(下)
    3、學 js也許前面兩個大家覺得還沒弄明白,看到 js就傻了眼,其實 js入門很簡單,不需要會太多東西,只要根據某個 id或者 name獲取網頁 dom或者樣式,或者值,然後為某個 id或者 name的元素標籤賦值,或者附加數據, html,這是與數據有關的操作,然後數據邏輯判斷,效果方面的,只不過是跳轉,彈出,隱藏什麼,把這些結合起來其他的實際使用,代碼一點都不難,這些 js的基本知識,其他的就不用看了
  • Angular、React 當前,Vue.js 優劣幾何?
    在過去一年裡,前端開發發展迅速,前端工程師的薪資亦是水漲船高。2019 更是熱度不減,而作為近年來尤為熱門的前端框架,Vue.js 自是積累了大量關注。那麼,Vue.js 是適合你的框架嗎?因此,我想分享一些有關 Vue.js 的信息,以及我在使用 Vue.js 來構建生產應用中獲得的一些個人經驗。現在讓我們一起來問這個問題:Vue.js 是適合你的框架嗎?注意:我並不想說 Vue.js 比 React、Angular 或者其它的任何前端框架好。這裡我分享的只是我在項目中使用 Vue.js 而獲得的一些個人體驗。
  • 第八篇:jQuery的使用及元素選擇器
    jQuery概述當前,WEB開發幾乎所有的項目前端都依賴於jQuery框架。jQuery框架是一個開源的JavaScript,它對JavaScript進行了功能封裝,開發人員使用少量的代碼就能完成要編寫很多JS語句才能完成的功能。jQuery的核心思想就是「寫得少,做的多」。
  • 前端工程化(ES6模塊化和webpack打包css,less,scss,圖片,字體...
    是一個流行的前端項目構建工具,可以解決目前web開發的困境。運行 npm install jquery -s 命令,安裝jQuery 導入jQuery 打開index.js文件,編寫代碼導入jQuery並實現功能: import $ from "jquery"; $(function(){ $("li:odd").css("background","cyan"); $
  • total.js 2.4.0 發布,Node.js 的 MVC 框架
    total.js 2.4.0 發布了。total.js 是一個 web 應用框架,使用 JavaScript、HTML、CSS 和 Node.js(MVC) web 應用框架來構建 web 網站和 web 應用。
  • QR CODE二維碼生成控制項
    QR CODE二維碼生成控制項是編程控制項頻道下深受用戶喜愛的軟體,太平洋下載中心提供QR CODE二維碼生成控制項官方下載。
  • React vs Angular vs Vue.js——2019 該選誰?(更新版)
    我們在 2018 年分布了一篇比較 React 和 Angular 的文章,而在 2019 年,由於每個框架的快速版本迭代,我們將再次比較兩者以及市場上的新玩家 Vue.js,分享每個前端框架的優缺點,從而幫助開發者為產品開發中的每個單獨案例找到最適合他們開發需求的正確選擇。之前我們發布了一篇文章,比較了 Angular 與 React。