第一个 Chrome 扩展

参考原文

知识点:

  • browser_action




首先新建一个名为 my_clock 的文件夹,在此文件夹中新建一个名为 manifest.json 的文件,内容如下:

{
    "manifest_version": 2,
    // 扩展的名称
    "name": "我的时钟",
    // 扩展的版本
    "version": "1.0",
    // 扩展的描述
    "description": "我的第一个Chrome扩展",
    // 扩展相关图标文件的路径
    "icons": {
        "16": "images/icon.png",
        "48": "images/icon.png",
        "128": "images/icon.png"
    },

    // 指定扩展的图标放在Chrome的工具栏中
    "browser_action": {
        // 定义了相应图标文件的路径
        "default_icon": {
            "19": "images/icon.png",
            "38": "images/icon.png"
        },
        // 定义了当用户鼠标悬停于扩展图标上所显示的文字
        "default_title": "我的时钟",
        // 定义了当用户单击扩展图标时所显示的html文件路径
        "default_popup": "popup.html"
    }
}

接下来我们开始编写 popup.html

<html>

<head>
    <style>
    * {
        margin: 0;
        padding: 0;
    }

    body {
        width: 250px;
        height: 300px;
    }

    div {
        line-height: 100px;
        font-size: 42px;
        text-align: center;
    }
    </style>
</head>

<body>
    <div id="clock_div"></div>
    <script src="js/my_clock.js"></script>
</body>

</html>

如果你曾经编写过网页,会发现上面这个页面省略了很多内容,比如 <title> 标签。因为对于 Chrome 扩展来说,很多对网页有意义的内容是无意义的,所以我们可以只挑需要的写,当然你全写出来也不会有什么问题。

上面的这个页面首先定义了全局元素的 marginpadding 为 0,这样我们可以更加自由地控制元素的外观。

在编写网页时,body 的尺寸往往不会专门给定,但对于 Chrome 扩展有时这是必要的,比如此例中我们需要告诉 Chrome 当用户单击扩展图标后展示一个多大的界面。

之后我们在 body 标签中定义了一个 idclock_div 的 div 容器,用这个容器来显示当前的时间,这样我们就把 HTML 的布局写好了。

接下来我们就需要引入 JavaScript 处理数据并动态显示了。值得注意的是 Chrome 不允许将 JavaScript 代码段直接内嵌入 HTML 文档,所以我们需要通过外部引入的方式引用 JS 文件。

当然 inline-script 也是被禁止的,所以所有元素的事件都需要使用 JavaScript 代码进行绑定,如果你没有使用一个拥有强大选择器的库(如 jQuery),最好给需要绑定事件的元素分配一个 id 以便进行操作。

下面来编写 my_clock.js 文件:

function my_clock(el){
    var today=new Date();
    var h=today.getHours();
    var m=today.getMinutes();
    var s=today.getSeconds();
    m=m>=10?m:('0'+m);
    s=s>=10?s:('0'+s);
    el.innerHTML = h+":"+m+":"+s;
    setTimeout(function(){my_clock(el)}, 1000);
}

var clock_div = document.getElementById('clock_div');
my_clock(clock_div);

my_clock.js 文件中我们定义了一个 my_clock() 函数用于显示时间,这个函数包含了一个 el 参数,这个参数为显示时间的容器。

由于在 HTML 文档中我们设计在 idclock_div 的 div 容器中显示时间,所以调用 my_clock() 函数时我们传入了这个容器,在 js 文件中用变量 clock_div 表示。之后 my_clock 函数 1000 毫秒之后又会再次调用自身,这样 clock_div 中显示的时间就会被更新。

至此这个扩展就编写完毕了,当然别忘了将图标文件也放入相应的文件夹中。

下面我们就需要将这个扩展载入 Chrome 中运行了。

  1. 点击: 工具栏 —— 更多工具 —— 扩展程序:
  1. 开启开发者模式
  1. 加载已解压的扩展程序,找到刚才编写 manifest.json 的路径
  1. 我们的插件已被成功加载
  1. 点击插件栏的图标,看到运行效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 标签: 我们都知道html块级元素默认是垂直排列的,而行内元素时水平排列的,而在布局时基本上都是用块级元素,如di...
    王培921223阅读 6,541评论 0 1
  • 1、App内屏幕录制的实现 AVAssetWriterInputPixelBufferAdaptor应该只适用于将...
    派大星的博客阅读 442评论 0 0
  • 2、Android组件化项目实施步骤 1)第一步:配置可自动将组件在Application和Library属性之间...
    自然之秋阅读 381评论 0 0
  • 硬件篇-多显示器 先放结论:多显示器是一个锦上添花的东西,对于进入专注状态的人更能提高效率,反之,则会分散注意力,...
    haoooozi阅读 424评论 0 0
  • 你是不是也经常这样?你是不是手机里面起床闹钟调了三个。拖延就是从十分钟开始的。有下面几件事情我从不拖延,我要上厕所...
    金鱼茵茵阅读 344评论 0 0

友情链接更多精彩内容