Chrome插件开发(三)
在日常工作中,我们可能经常需要在手机端测试我们所做的页面,如果每次在手机端测试都手输网址,网址短的还好,如果长的网址也需要一个字母一个字母去敲,那无疑是一场噩梦,试想我们有一个工具只需要点击一个按钮就可以将当前网址生成二维码,而手机端仅仅需要扫一扫就可以打开我们想要测试的网址,是不是很美好呢?下面我们就自己动手从零开始实现一个生成当前网址二维码的插件。在开始编写之前,我们需要先做一点点知识预备:
1、我们之前在讲基础知识的时候有提到browser_action和page_action这两个东西,前者是表示这是一个浏览器行为,其图标显示在地址栏右侧,而后者表示这是一个页面行为,其图标现在在地址栏后面,当然在现在的浏览器上是看不出来这个区别的,他们两个不能同时定义,那么网址二维码生成是一个浏览器行为还是一个页面行为呢?就其行为而论网址二维码生成是将页面的网址生成二维码,所以毫无疑问它应该是一个页面行为。
2、我们需要使用到的API:
(1)chrome.pageAction.show 在特定标签特定行为情况下显示页面行为的图标,与之对应的还有chrome.pageAction.hide,在特定标签特定行为下隐藏页面行为的图标,使用方式:
chrome.pageAction.show(tabId); chrome.pageAction.hide(tabId);
(2)chrome.tabs.onUpdated 这是一个回调函数,我们需要在tab更新的时候选择是要显示还是隐藏页面行为的图标。
chrome.tabs.onUpdated.addListener(function(tabId, info) { chrome.pageAction.show(tabId); });
(3)chrome.tabs.getSelected 获取当前选中的选项卡的明细。由于上面使用了tabs相关API,别忘记需要在manifest.json中申请tabs权限。
3、网址生成二维码选择直接调用api,这里选择使用联图的API:
http://qr.liantu.com/api.php?bg=f3f3f3&fg=ff0000&gc=222222&el=l&w=200&m=10&text=https://www.deanhan.cn
在了解了上面的基础点之后,是时候展示真正的技术了,首先规划一下目录结构:
核心文件manifest.json代码:
{ "name": "二维码生成器", "version": "1.0", "description": "二维码生成器", "manifest_version": 2, "icons": { "16": "images/icon-48.png", "48": "images/icon-48.png", "128": "images/icon-48.png" }, "permissions": ["tabs", "https://*/*", "http://*/*"], "background": { "scripts": ["js/background.js"] }, "page_action": { "default_popup": "popup.html" } }
popup.html的代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Popup</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="contain"> <img src="" alt="" id="qrcode"> </div> <script type="text/javascript" src="js/popup.js"></script> </body> </html>
popup.js的代码如下:
var imgNode = document.getElementById("qrcode"), prefix = "http://qr.liantu.com/api.php?bg=f3f3f3&fg=ff0000&gc=222222&el=l&w=200&m=10&text="; chrome.tabs.getSelected(function(w) { var url = w.url, img = new Image(); img.src = prefix + url; img.onload = function() { imgNode.src = this.src; imgNode.style.display = "block"; } })
背景页background.js的代码如下:
chrome.tabs.onUpdated.addListener(function(tabId, info) { chrome.pageAction.show(tabId); });
style.css 代码如下
#contain{ background: url(../images/loading.gif) center center no-repeat; width: 200px; height: 200px; } #contain img{ width: 100%; height: 100%; display: none; }
运行截图:
我们在popup.js 中输出一下当点击插件小图标时的值
var imgNode = document.getElementById("qrcode"), prefix = "http://qr.liantu.com/api.php?bg=f3f3f3&fg=ff0000&gc=222222&el=l&w=200&m=10&text="; chrome.tabs.getSelected(function (w) { console.log('-------->', w); // 输出一下 w var url = w.url, img = new Image(); img.src = prefix + url; img.onload = function () { imgNode.src = this.src; imgNode.style.display = "block"; } })
通过开发者调试工具如下:
从上图可以看出我们就是获取到了url参数,然后将其生成一个二维码展示出来。
- [No000080]右键解锁增强Chrome插件开发,破除防复制
- chrome插件开发
- chrome浏览器插件基本开发
- chrome 插件开发之 --manifest.json
- Chrome 插件开发指导
- chrome插件开发1:永远的helloworld
- Chrome插件(Extensions)开发攻略
- 使用Backbone.js开发Chrome便签插件
- Chrome插件开发
- 黄聪:360浏览器、chrome开发扩展插件教程(1)开发Chrome Extenstion其实很简单
- chrome 开发并使用油猴 Tampermonkey 插件
- chrome插件开发资料
- Chrome插件LiveStyle结合Sublime Text3编辑器实现高效可视化开发
- 其它_chrome插件开发
- centos7安装chrome及加载poatman开发插件
- Chrome浏览器插件开发心得
- 开发Chrome的插件(现在的FaWave)
- 前端开发和设计必备的Chrome插件
- chrome 浏览器插件开发
- 基于Chrome,foxfire(WeiKit内核)浏览器的密码安全控件插件开发(NPAPI)