Chrome插件开发系列四:网址二维码生成

原创 Dean 系列文章 二维码阅读
2018-10-22 23:41

在日常工作中,我们可能经常需要在手机端测试我们所做的页面,如果每次在手机端测试都手输网址,网址短的还好,如果长的网址也需要一个字母一个字母去敲,那无疑是一场噩梦,试想我们有一个工具只需要点击一个按钮就可以将当前网址生成二维码,而手机端仅仅需要扫一扫就可以打开我们想要测试的网址,是不是很美好呢?下面我们就自己动手从零开始实现一个生成当前网址二维码的插件。

在开始编写之前,我们需要先做一点点知识预备:

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=http://www.deanhan.cn

在了解了上面的基础点之后,是时候展示真正的技术了,首先规划一下目录结构:

- QRcode
 - images
  - icon-48.png
 - js
  - background.js
  - popup.js
 - manifest.json

核心文件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);
});

运行截图:

插件源码下载,请点击这里

系列文章导航:

第一节:Chrome插件开发系列一:弹窗终结者

第二节:Chrome插件开发系列二:跨域调试助手

第三节:Chrome插件开发系列三:百度google搜索链接直链

本文地址:https://www.deanhan.cn/link-to-qrcode.html
版权声明:本文为原创文章,版权归 Dean 所有,欢迎分享本文,转载请保留出处!
  • 支付宝二维码 支付宝
  • 微信二维码 微信