zoukankan      html  css  js  c++  java
  • 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天做个demo(续集)

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用。(浏览器自带的扫描就够了,QQ扫码和微信扫码部分手机不能直接连接wifi

    在看之前你可以扫一扫下面几个二维码先看看效果:

    上篇网站介绍了一下常用格式(http://www.cnblogs.com/dunitian/p/4998714.html),其实扫二维码的本质就是解析出一段字符串,为什么有一些神奇的功能呢?那是字符串的格式满足一些系统内置的协议或者格式,所以系统就帮你干了类似于发短信,打电话,添加联系人,连接wifi之类的事情。可以想像,你开了个店,店门口有个免费wifi的二维码,然后自己名片也是一个二维码~~~~是不是有点高大上的感觉?

    其实代码并没有什么技术含量,既然有人要求,那就写一下吧,这次就不局限平台了,写了个通用的demo

    核心类库:jquery.qrcode.min.js

    核心代码:

    //中文字符处理
            function toUtf8(str) {
                var out, i, len, c;
                out = "";
                len = str.length;
                for (i = 0; i < len; i++) {
                    c = str.charCodeAt(i);
                    if ((c >= 0x0001) && (c <= 0x007F)) {
                        out += str.charAt(i);
                    } else if (c > 0x07FF) {
                        out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
                        out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
                        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                    } else {
                        out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
                        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                    }
                }
                return out;
            }
    

     

    //生成二维码
            function outputQRCod(txt, width, height) {
                //先清空
                $("#code").empty();
                //中文格式转换
                var str = toUtf8(txt);
                //生成二维码
                $("#code").qrcode({
                    render: "table",
                     width,
                    height: height,
                    text: str
                });
            }
    

    完整代码:

    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="utf-8">
        <title>生成二维码</title>
        <script src="JavaScript/jquery-1.8.3.min.js"></script>
        <script src="JavaScript/jquery.qrcode.min.js"></script>
        <script type="text/javascript">
            $(function () {
                //没有中文就可以这么简单
                $('#code').qrcode("http://dnt.dkill.net");
    
                //普通转换
                $("#txt_btn").click(function () {
                    outputQRCod($("#inputTxt").val(), 200, 200);
                });
    
                //URL演示
                $("#url_btn").click(function () {
                    var urlTxt = $("#inputUrl").val();
                    if (urlTxt.indexOf("http://") < 0) {
                        urlTxt = 'http://' + urlTxt;
                    }
                    outputQRCod(urlTxt, 400, 400);
                });
    
                //联系人添加演示
                $("#people_btn").click(function () {
                    var txt = "BIZCARD:N:" + $('#inputName').val() + ";T:" + $('#inputPost').val() + ";C:" + $('#inputCompany').val() + ";A:" + $('#inputAddress').val() + ";B:" + $('#inputMobile').val() + ";E:" + $('#inputEmail').val() + ";;";
                    outputQRCod(txt, 400, 400);
                });
    
                //WiFi连接演示
                $("#wifi_btn").click(function () {
                    var txt = "WIFI:T:" + $('#WiFiType').val() + ";S:" + $('#inputWiFiName').val() + ";P:" + $('#inputWiFiPass').val() + ";;";
                    console.log(txt);
                    outputQRCod(txt, 400, 400);
                });
            });
    
            //中文字符处理
            function toUtf8(str) {
                var out, i, len, c;
                out = "";
                len = str.length;
                for (i = 0; i < len; i++) {
                    c = str.charCodeAt(i);
                    if ((c >= 0x0001) && (c <= 0x007F)) {
                        out += str.charAt(i);
                    } else if (c > 0x07FF) {
                        out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
                        out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
                        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                    } else {
                        out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
                        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                    }
                }
                return out;
            }
    
            //生成二维码
            function outputQRCod(txt, width, height) {
                //先清空
                $("#code").empty();
                //中文格式转换
                var str = toUtf8(txt);
                //生成二维码
                $("#code").qrcode({
                    render: "table",
                     width,
                    height: height,
                    text: str
                });
            }
    
        </script>
    </head>
    
    <body>
        <div id="main">
            <div class="demo">
                <p>请输入内容然后点击按钮生成二维码:</p>
                <div id="code"></div>
                <h2>演示1:</h2>
                <p>
                    普通文本:<input type="text" class="input" id="inputTxt" value="">
                    <input type="button" id="txt_btn" value="生成二维码">
                </p>
                <h2>演示2:</h2>
                <p>
                    URL 演示:<input type="text" class="input" id="inputUrl" value="">
                    <input type="button" id="url_btn" value="生成二维码">
                </p>
                <h2>演示3:</h2>
                <p>加联系人:(选填)<input type="button" id="people_btn" value="生成二维码"></p>
                <p>
                    姓名:<input type="text" class="input" id="inputName" value=""><br />
                    <br />
                    职位:<input type="text" class="input" id="inputPost" value=""><br />
                    <br />
                    公司:<input type="text" class="input" id="inputCompany" value=""><br />
                    <br />
                    地址:<input type="text" class="input" id="inputAddress" value=""><br />
                    <br />
                    手机:<input type="text" class="input" id="inputMobile" value=""><br />
                    <br />
                    邮箱:<input type="text" class="input" id="inputEmail" value=""><br />
                    <br />
                </p>
                <h2>演示4:(现在的wifi一般都是WPA的,WEP的基本上10分钟内就能破解了)</h2>
                <p>
                    WiFi名称:<input type="text" class="input" id="inputWiFiName" value=""><br />
                    <br />
                    WiFi密码:<input type="text" class="input" id="inputWiFiPass" value=""><br />
                    <br />
                    WiFi类型:<select id="WiFiType"><option value="WPA">WPA/WPA2</option>
                        <option value="WEP">WEP</option>
                        <option value="nopass">无加密</option>
                    </select>
                    <input type="button" id="wifi_btn" value="生成二维码">
                </p>
            </div>
        </div>
    </body>
    </html>
    

    你们要什么效果就安装格式自己编辑一下就可以了,先闪了~~有机会再说一说二维码的美化

    demo下载:http://pan.baidu.com/s/1pJGhV0f

  • 相关阅读:
    Swift8-枚举Enumerations
    Swift7-闭包
    Swift6-函数
    Swift5-控制流
    Swift4-集合类型
    什么是node.js
    nodejs的安装
    环境变量的认识,,,
    shell是什么,各种shell的初步认识,适用于初学者
    exports和module.exports的区别
  • 原文地址:https://www.cnblogs.com/dunitian/p/5001855.html
Copyright © 2011-2022 走看看