开发目的:由于平时在电脑端须要发送些连接啊,或者文字到手机上时每次都要打开qq,特别是有时候电脑断网了,显得特别麻烦,因此开发了此插件。javascript
最终效果图:css
小需求须要个二维码生成插件,这里引用 qrcode.js。有了现有的二维码插件就简单了;
chrome扩展编写并非很难的事情,通常一个manifest.json
文件,一个popup.html
文件就能够搞定,若是须要配置,再增长一个options.html
文件;固然根据需求还能够增长其余的文件。html
首先建立一个 manifest.json
文件java
编写 manifest.json
文件git
{ //这里必须是2 "manifest_version": 2, //扩展名称 "name": "QRcode tool", //扩展版本 "version": "1.0", //扩展描述 "description": "一个简洁的二维码生成工具,简单实用,小巧玲珑。", //扩展图标(在扩展中心显示) "icons": { "16": "images/icon16.png", "48": "images/icon128.png", "128": "images/icon128.png" }, //配置页面 "options_page": "options.html",//配置项页面 //扩展图标配置 "browser_action": { "default_popup": "popup.html", "default_titlec": "QRcode tool", "default_icon": { "16": "images/icon16.png" } }, //权限声明 "permissions":["tabs"] }
这文件配置须要注意的问题:github
严格的json格式,key/val均须要采用双引号,最后的项后面不能有逗号,
。chrome
扩展的一些功能须要声明权限permissions
。json
编写 popup.html
文件session
<link rel="stylesheet" href="css/qrcode.css"> <div class="box"> <h2 class="title">扫码浏览本站</h2> <div class="qrcode-bg" id="qrcode-bg"> </div> </div> <script src="js/qrcode.js" type="text/javascript"></script> <script src="js/popup.js" type="text/javascript"></script>
只粘贴主要代码。
这里须要注意:chrome扩展里的html页面好像是不能够写<script></script>内联代码的,因此须要另外写个js文件,具体什么缘由,请专业人士解答下。函数
popup.js
onload=function(){ chrome.tabs.getSelected(function(tab){ var qrcode = new QRCode('qrcode-bg', { text: tab.url, width: 128, height: 128, /*colorDark : '#000000', colorLight : '#ffffff',*/ correctLevel : QRCode.CorrectLevel.H }); console.log(qrcode); }); }
chrome.tabs.getSelected(callback(tab))
这个函数时chrome扩展里可使用的,用来获取当前标签页对象
回调参数tab
是一个标签页对象,标签页对象内容以下:
{ id: 标签id, index: 标签在窗口中的位置,以0开始, windowId: 标签所在窗口的id, openerTabId: 打开此标签的标签id, highlighted: 是否被高亮显示, active: 是不是活动的, pinned: 是否被固定, url: 标签的URL, title: 标签的标题, favIconUrl: 标签favicon的URL, status :标签状态,loading或complete, incognito: 是否在隐身窗口中, width: 宽度, height: 高度, sessionId: 用于sessions API的惟一id }
到这里已经实现功能了。
调试chrome扩展直接拖拽项目文件夹到chrome的扩展程序页面(chrome://extensions/
)松开便可安装。
效果
彷佛还少点什么,如何生成自定义文本二维码呢?
好吧,在增长个配置页面,在配置页面实现就能够了。
在 manifest.json
文件增长项
//配置页面 "options_page": "options.html",//配置项页面
options.html
文件内容:
<div class="mlay"> <div class="mlay-body"> <div class="box"> <div class="qrcode-bg" id="qrcode-bg"></div> <textarea placeholder="在这输入文本..." class="text control" id="text"></textarea> <button class="btn info" id="exe"><img src="images/icon16.png" class="icon">生成二维码</button> </div> <div class="footer"> <p class="copyright"> <a href="https://github.com/mengdu" target="_blank">@蓝月萧枫</a> 版权全部 <a href="https://github.com/mengdu/QRcode-tool" target="_blank">浏览源码</a> </p> </div> </div> </div> <script src="js/qrcode.js" type="text/javascript"></script> <script type="text/javascript" src="js/options.js"></script>
编写options.js
文件:
//options.js onload=function(){ var qrcode = new QRCode('qrcode-bg', { text: "欢迎使用QRcode tool !", width: 330, height: 330, //colorDark : '#000000', //colorLight : '#F1F1F1', correctLevel : QRCode.CorrectLevel.H }); var text = document.getElementById('text'); document.getElementById('exe').onclick = function(){ if(text.value.length <= 0){ alert("请填写内容"); return false; } qrcode.makeCode(text.value); }; }
调试
ok,完美。
打包程序:点击打包扩展程序
点击打包扩展程序
便可完成。
小目标小需求实现。
不支持长文本生成二维码,像百度搜索连接生成的二维码特别细,手机扫描解析不了的状况
有时候长文本 qrcode.js 会出现 Uncaught Error: code length overflow.
错误,暂时不知道什么缘由
打包扩展安装后会显示并不是来自 Chrome 网上应用店
的字样,没钱放chrome商店,没办法。
喜欢的star下吧,谢谢!