开发谷歌浏览器插件初体验

119 阅读2分钟

在开发谷歌插件之前我们先了解一下啥事谷歌插件

谷歌插件就是给谷歌浏览器添加功能的小程序,可以获取网页的内容或进行修改,相信大家电脑上或多或少,都会安装一个或者几个插件,应该帮了大家不少忙

咱们来看一下结构

文件结构1.png

基本上都是上面那个图片的结构 咱们重点说一下manifest.json这个文件,这个文件是插件的配置信息,包含了插件名称,版本号等信息,也是谷歌浏览器主要识别的文件,很重要

manifest.json 文件基本解析 (这是我用到的)

{
   "manifest_version": 2,   // 件程序的版本号,主流版本是2,最新是3
   "name": "aaaa", // 插件名称
   "version": "1.0", // 插件版本号
   "description": "描述", // 插件描述
   "icon": { // 图片
      "128": "img/icon1.png",
      "48": "img/icon1.png",
      "16": "img/icon1.png"
   },
   "browser_action": { // 新增popup弹框
      "default_popup": "index.html", // 默认弹窗的html页面
      "default_icon": "img/icon1.png" // 图片icon
   }"permissions" : [ // 申请权限这个配置我们也经常用
      "storage", // 申请本地存储权限 还有一些很多其他的权限参数 ,大家可以去查询官网
   ]
}

部分人可能在看技术文章,或者视频的时候,会画一些东西,比如简易的图画或者流程图,但是打开软件或者电脑自带的画板比较麻烦,我自己就是,所以就想到做个谷歌画板插件,可以比较方面的打开绘画,而且有保存到本地的功能,方便自己使用。

还有一个问题需要注意一下,js的业务逻辑用引用的方式,才能正常使用

这是html

<canvas id="canvas" width="500px" height="500px"></canvas> <div> <button id="btn">保存到本地</button> <button id="clear">清除</button> </div>

下面是js的逻辑 用的是原生的js

window.onload = function () {
    let canvas = document.getElementById('canvas');
    let context = "";
    let isb  = false
    console.log(canvas)
    context = canvas.getContext('2d');
    context.fillStyle="#ffffff";
    context.fillRect(0,0,500,500);
    canvas.addEventListener('mousedown', function (ev) {
        if (!isb) {
            context.fillStyle="#ffffff";
            context.fillRect(0,0,500,500);
            isb = true
        }
        var x1 = ev.offsetX, y1 = ev.offsetY;
        var x2, y2
        function move(ev) {
            context.beginPath();
            context.moveTo(x1, y1);
            x2 = ev.offsetX;
            y2 = ev.offsetY;
            context.lineTo(x2, y2);
            context.strokeStyle = '#000';
            context.stroke();
            context.closePath();
            x1 = x2;
            y1 = y2;
        }
        function end() {
            canvas.removeEventListener('mousemove', move);
            canvas.removeEventListener('mouseup', end);
        }
        canvas.addEventListener('mousemove', move);
        canvas.addEventListener('mouseup', end);
    })
    var btn = document.getElementById('btn')
    btn.addEventListener('click', function () {
        var imgURL = canvas.toDataURL('image/png');
        var dlLink = document.createElement('a');
        var MIME_TYPE = 'image/png';
        dlLink.download = Math.floor(Math.random()*1000000000000)+'画板';
        dlLink.href = imgURL;
        dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');
        document.body.appendChild(dlLink);
        dlLink.click();
        document.body.removeChild(dlLink);
    });
    var clear = document.getElementById('clear')
    clear.addEventListener('click', function () {
        isb = false
        context.clearRect(0,0,800,800);
    })
}

这是完成之后下效果,

2022-07-20 132610.gif 完结撒花

我正在参加「创意开发 投稿大赛」详情请看:掘金创意开发大赛来了