2019独角兽企业重金招聘Python工程师标准>>>

因为个人爱好并且工作中有这样的一个需求:用手机测试开发好的页面时,要将地址传到手机去测试。虽然有很多的方法,比如用qq、360浏览器的传送等,但是觉得挺麻烦的,于是就自己折腾了这么一个插件。本文主要是学习chrome插件的开发,实现一个在地址栏添加一个图标,点击后显示当前url的二维码图片,其中包括了图标的设置,当前tab一些信息的读取,二维码的生成等。

在此之前,不需要了解一些关于chrome插件开发的知识,谷歌的文档当然是最全的,但是访问成了问题,国内的我推荐360的,http://open.chrome.360.cn/extension_dev/overview.html,这个网站的很不错。如果你不喜欢看这些文档,那么也可以直接从代码入手,O(∩_∩)O~

一下的步骤是以我的插件开发为例。

第一,准备一些基本材料,建立manifest.json文件。

要准备的东西就是图标,因为插件都需要一个图标,如果没有也可以,毕竟为了区别开其他的插件,我觉得这个是有必要的。这里需要提供一个128x128的图标,这个图标将在webstore安装时候使用。扩展需要一个48x48的图标,扩展管理页面需要这个图标。同时,你还可以提供给一个16x16的图标作为扩页面的fa网页图标 。

如果没有合适的图标可以后续添加,到这里可以添加manifest.json文件了,这个文件是必须要有的,因为这个文件告诉浏览器你这个插件的所有信息。关于这个文件中的  name 、version、description 这些设置都比较简单,而manifest_version目前默认是2,其他的就要根据实际情况来设置了,我的设置如下图:

第二、添加一些基本的文件

首先需要添加一个 background.js这是用来监听页面变化用的。还要添加一个popup页面文件popup.html,这个文件是点击图标后显示的弹窗页面,至于要在里面实现什么东西,可以在这页面再引用。基本的文件就是这两个了,是不是有点简答,O(∩_∩)O~

第三、修改background.js,实现页面加载时地址栏加载图标

在修改之前,应该往manifest.json文件里面添加了permissions的选项,增加declarativeContent tabs这两项,因为我们监听页面时会需要用到这两个,上图可见,我已经添加进去了O(∩_∩)O~

那么接着就是background.js的代码了,我们需要用到 chrome.runtime.onInstalled.addListener 来监听页面初始化加载,通过chrome.declarativeContent.onPageChanged的一些方法来规定图标在什么时候显示,我这里需要的是urld的schemes必须包含http或https才能显示,代码如下:

chrome.runtime.onInstalled.addListener(function() {// Replace all rules ...chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {// With a new rule ...chrome.declarativeContent.onPageChanged.addRules([{// That fires when a page's URL contains a 'g' ...conditions: [new chrome.declarativeContent.PageStateMatcher({pageUrl: { schemes:['https','http'] },})],// And shows the extension's page action.actions: [ new chrome.declarativeContent.ShowPageAction() ]}]);});
});

其实这段代码是从官方deom中copy过来然后再修改一下...

这样就可以实现了地址栏图标的添加了。

第四、修改弹出框页面popup.html

popup.html没有太多的修饰,但是要实现二维码,这里引用了jquery  jquery.qrcode.js 来实现。关于 jquery.qrcode.js 的用法,需要详细了解的自己百度一下,这里就不多说了。值得注意的是不能在页面里面写js,chrome是禁止这么做的,那么要在这里引入一个js文件来操作页面的dom,于是就需要增加一个popup.js。文件代码如下:

<!doctype html>
<html><head><title>二维码</title><script src="src/jquery-2.1.3.min.js"></script><script src="src/jquery.qrcode.js"></script><script src="popup.js"></script></head><body><div id="qrcode"></div></body>
</html>

第五、修改popup.js来实现二维码的显示

通过chrome.windows.getCurrent来获取当前的窗体,通过chrome.tabs.getSelected来获取当前页面,通过jQuery('#qrcode').qrcode来绘制二维码。这里我还添加了一个drawImg方法,将网站的favIcon画在二维码的中间O(∩_∩)O~,具体实现的代码如下:

chrome.windows.getCurrent(function(win){ chrome.tabs.getSelected(function(tab){ var img,_width=160,_height=160;//console.log(tab);jQuery('#qrcode').qrcode({width:_width,height:_height,text:tab.url});if(tab.favIconUrl){img = new Image();img.src = tab.favIconUrl;img.onload=function(){ var _w = img.width,_h = img.height,_x = 0 ,_y = 0;if(_w && _h){ drawImg(img,(_width-_w)/2,(_height-_h)/2)}}}})
});//加入图片
function drawImg(img,x,y){ var myCanvas = document.getElementsByTagName('canvas'),_canvas = myCanvas[0],myctx = _canvas.getContext('2d');myctx.drawImage(img,x||0,y||0);}

最后,我们就可以进行调试了,调试的方法是在扩展程序中“加载正在开发的扩展程序”,如下

我们可以看到的效果:

O(∩_∩)O~这样,一个简单的插件就实现了,本插件已经提交到了git.oschina.net,感兴趣的朋友可以去看看,传送门。希望能给像我一样努力的菜鸟一些帮助,欢迎大家指教!

本文同步在我的个人博客发布 http://www.subying.com/archives/96.html

转载于:https://my.oschina.net/tearlight/blog/369013

chrome插件-显示在地址栏的二维码相关推荐

  1. C#判断用户是否使用微信浏览器,并据此来显示真实内容或二维码

    平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就只显示当前地址的二维码.这个用C#怎么实现呢?我们结合代码来看看. 首先,我们需要先判断用户使用的是什么浏览器,这 ...

  2. 本节作业之显示不同问候语、显示密码、关闭二维码、循环精灵图背景、显示隐藏文本框内容、密码框格式提示错误、京东关闭广告、新浪下拉菜单、开关灯、换肤、表格隔行变色、表单取消全选、tab栏切换、发布删除留言

    本节作业之显示不同问候语.显示密码.关闭二维码.循环精灵图背景.显示隐藏文本框内容.密码框格式提示错误.京东关闭广告.新浪下拉菜单.开关灯.换肤.表格隔行变色.表单取消全选.tab栏切换.发布删除留言 ...

  3. Chrome浏览器地址栏配置二维码自动生成工具

    打开Chrome浏览器 新开一个窗口地址栏输入 chrome://flags/ 搜索qr code 下拉框选择Enable选项 重启浏览器即可 点击需要生成二维码的网页地址栏 出现如下图标 点击小图标 ...

  4. XPosed插件自动生成支付宝收款二维码

    一.前言 前一段时间才偶然看到这个论坛,并且看了一篇@jiangwei212 大神的<Android支付宝蚂蚁森林能量自动收取插件开发原理解析>,这才知道XPosed和VirtualXPo ...

  5. 微信分享朋友圈链接怎么显示图片-企业微信二维码转成名片

    一.背景 在移动端业务开发的中,很多时候会进行h5页面的分享操作,但是原生的微信分享效果并不能满足我们业务的需求,如下图: 企业微信二维码转成名片 我们可以看的原生的分享描述是一个页面链接,分享图标也 ...

  6. html2canvas 图片中的文字显示模糊 图片模糊 二维码模糊 的原因之一

    有些h5项目有长按保存图片的需求,可以使用 html2canvas 来实现相对应的功能, 但是在项目中发现有的地方模糊不清,比如网页中有一张二维码的图片模糊,无法识别, 后来发现,图片之类的不要当作背 ...

  7. 谷歌浏览器插件,当前网页地址的二维码

    经常在pc浏览网站时想要用手机来打开 如果登录了qq和微信直接复制就可以打开了 要是没有登录,而且网站地址很长,那就麻烦了 于是有个想法,如果有个浏览器插件可以直接将当前页的url生成二维码,如何手机 ...

  8. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...

    根据指定的内容生成对应的条形码或二维码,在如今移动互联网时代,并不是一件什么新鲜事,随便百度一下,都能找到好多的软件或在线网站可以帮我们做到,但细想一下,如果很偶然地只是生成一个两这样的图形,百度一下 ...

  9. Mac pro微信开发者工具无法显示登录的二维码解决方案

    一开始在微信小程序里是使用测试号开发的,更改测试号为自己的AppId死活改不了,报错: Error: 需要重新登录,access_token expired[touristappid] 1.首先要确保 ...

最新文章

  1. 阿里某程序员爆料:面试一个重庆小伙子,却被对方微信调戏!
  2. 毕业一两年,怎样快速成长和晋升?
  3. HNCU 1746: 算法4-1,4-3:定位子串
  4. JDK 8中的流驱动的集合功能
  5. 7-1 射击游戏 (20 分)
  6. Windows Mobile 5 编程体验4
  7. 最全ARM汇编伪指令
  8. 字符串(后缀自动机):COGS 2399. 循环同构
  9. 区块链与java的应用开发_用 Java 开发一个区块链
  10. 摩斯电碼中英文对照表
  11. 使用Arcade制作的简单吃豆人游戏
  12. [经典模型] 4. 图与网络模型及方法
  13. web端第三方微信登录
  14. JZ38* 字符串的排列
  15. matlab画多组数据折线图_使用Origin绘制不相关多组数据折线图的方法
  16. Java面向对象设计(面向对象)
  17. 网络舆情舆论信息监督和收集的现代化技术解决方法
  18. Kubernetes 的 CI/CD 管道概述
  19. DPDK的meter库(单速率三色算法)
  20. 虚拟主播也带货?直播电商的变与不变

热门文章

  1. project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast
  2. android6变化,一次尝鲜体验 关于一加6升级Android P后的变化
  3. win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
  4. mysql5.7.20新特_Mysql5.7新特性
  5. 添加ejs后页面空白解决办法
  6. linux6.3 插u盘,U盘安装centos 6.3教程(超级详细教程)
  7. 中upload依赖包_upload-labs writeup
  8. Android studio中单项选择,Android studio单选按钮、复选按钮
  9. 小学教师计算机应用培训通讯稿,暑期培训通讯稿
  10. 20210217:力扣第228周周赛(上)