# web-qrcode **Repository Path**: jiangshaoneng/web-qrcode ## Basic Information - **Project Name**: web-qrcode - **Description**: 解决jquery.qrcode.min.js在IE6-IE8生成的二维码,打印不显示的问题。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2019-08-22 - **Last Updated**: 2022-07-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### jquery.qrcode.min.js 兼容 IE6 - 使用方式 ```
// 渲染二维码 $(function() { var url = window.location.href; $("#qrcode").qrcode({ render: "table", // 渲染方式有table方式和canvas方式 width: 150, //默认宽度 height: 150, //默认高度 text: url, //二维码内容 typeNumber: -1, //计算模式一般默认为-1 correctLevel: 2, //二维码纠错级别 background: "#ffffff", //背景颜色 foreground: "#000000" //二维码颜色 }); }) ``` ### 问题描述 - 通过 `jquery.qrcode.min.js` 在前端生成二维码,并且调用 `window.print();` 需要将二维码打印出来,那么问题来了。 - 渲染方式有`table`方式和`canvas`方式, 使用`canvas`必须在支持`canvas`的浏览器才能使用,比如:火狐,谷歌,IE9+ 以及其它支持canvas的浏览器中使用。 - 在IE6上(不支持`canvas`),则通过`table`的方式渲染也可以将二维码在页面上显示。但是通过 `window.print();`二维码显示不出来,`table`方式渲染就是通过往`td`中填充`background-color`来显示每个点的。由于浏览器在调用打印方法的时候会忽略调背景颜色。 ### 解决思路 - 为确保IE6上也能够正常使用,可以在原有的`td`中添加`div`,使用`div`的`border-top`上边框设置为长和宽相等形成二维码的每一个小点,其余的`border-left`,`border-right`,`border-bottom`都设为`0px`。 ### 修改后的代码 - gitee: - github: - 以下仅为修改的部分代码 ``` // 以下是我修改的部分 ...... c.width=h.width;c.height=h.height; for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f