简单的Chrome扩展程序

Posted by Will on June 24, 2017

“walk beside you ”

前言

  有思念你的人在的地方,就是你的归处。 —— 《火影忍者》


正文

  平时的生活、工作中,我们浏览的网页少不了伴随着广告,虽然不影响使用,但是碍眼啊。所以就想着弄个插件来过滤下, 于是拿百度先练手。Chrome的插件开发其实很简单,会一些前端的东西就可以开发,只是刚开始不知如何下手。然后在网上找了个360的文档。。。 摸索着过河。 baidu

Chrome插件

Chrome的插件文档上说应该包含以下文件:

  • manifest.json(必须)
  • 一个或多个Html
  • 一个或多个Js
  • 图片、图标

插件

manifest.json 这个Json文件主要是一些插件的信息,比如:

    {
        "name": "页面广告清除",
        "manifest_version": 2,
        "version": "1.0",
        "description": "暂只清除百度广告~ blog.smallfat.cn",
        "browser_action": {
            "default_icon": "icon128.png"
        },
        "icons": {
            "16": "icon16.png",
            "48": "icon48.png",
            "128": "icon128.png"
        },
        "permissions": [
            "*://*.baidu.com/*"
        ],
        "content_scripts": [
            {
                "matches": [
                    "*://www.baidu.com/*"
                ],
                "css": [
                    "main.css"
                ]
            }
        ]
    }
  • name 插件的名称
  • manifest_version manifest文件自身格式的版本号,现在强制为 2 ,不然会报错
  • version 当前插件的版本
  • description 描述
  • browser_action 控制插件图标的属性,如 default_icon 为 显示的图标
  • icons 一个或者多个图标,在安装的时候显示使用,需要提供三种尺寸
  • permissions 插件使用的权限,这里写的是百度的网址,意思是只要域名是baidu.com的时候才有权限
  • content_scripts 在文本页面运行的脚本文件,这里matches的意思是当前URL与之匹配的时候,下面的脚本生效

  这里只写了我用到的一些参数,还有好多参数没有列出来,可以再上门提供的链接里查到。

  从上面可以看出引用的图片、css 使用的路径为同一目录。所以我们需要创建一个目录,把所需要的 manifest.json图片css 放进去。

  我们要写的是一个去除搜索页面中 是广告的 搜索结果,所以可以用js来吧这些内容去掉,或者用css 把这样内容隐藏。 我这里用css来实现。

  通过查看Html元素,我们发现广告都是在 id=”content_left” 中 而且 样式都为 style=”display:block !important; content_left

  有于上面使用了!important you’xian’优先级最高,所以我们不能使用display,我们这里使用

    #content_left{ position: relative; }
    /*为你推荐*/
    #content_left .leftBlock{display: none !important;}
    /*广告*/
    #content_left > div[style^="display"]{
        position: absolute;
        top: -1000px;
    }

  我们把写好的css、修剪好尺寸的图片、manifest.json 放到一个文件下。我们使用Chrome浏览器 chrome://extensions/ 中的添加已解压的扩展程序来验证我们的插件, 如果我们的manifest.json写的有问题,则这里会显示错误。

打包

  Chrome的插件都是以crx 为后缀的。我们可以使用Chrome浏览器 chrome://extensions/ 中的打包扩展程序进行打包。 打包成功后会生产两个文件:

  • 一个是crx为后缀的插件
  • 一个是pem为后缀的私钥文件,用于以后版本升级使用

后记

  现在我们可以把我们打好包的插件直接拖拽到Chrome中,进行安装。以后百度搜索的时候就看不到碍眼的广告了~

  和过滤百度广告一个道理,我们可以扩展这个插件使其可以过滤CSDN、开源等网页的广告~

源码和插件