如何创建你自己的谷歌浏览器扩展

news2024/11/17 5:24:02

如果你是谷歌浏览器的用户,你可能已经在浏览器中使用了一些扩展。

你是否曾想过如何自己建立一个?在这篇文章中,我将向你展示如何从头开始创建一个Chrome扩展。

目录

  • 什么是Chrome扩展?
  • 我们的Chrome扩展会是什么样子的?
  • 如何创建Chrome扩展
  • 创建manifest.json文件
  • 总结

什么是Chrome扩展?

Chrome扩展是安装在Chrome浏览器中的一个程序,可以增强浏览器的功能。你可以使用HTML、CSS和JavaScript等网络技术轻松建立一个。

创建chrome扩展程序与创建Web应用程序类似,但它需要一个manifest.json文件,我们将在本帖最后一节讨论。

我们的Chrome扩展会是什么样子的?


Latest Covid Report of UK-Chrome Extension 

正如你所看到的,上述chrome扩展显示了英国冠状病毒(COVID-19)的最新数据。我们将在这篇博文中研究如何创建这个扩展。

在这里,我们将使用https://api.coronavirus.data.gov.uk/v1/data API,以获取数据。为了简单起见,我们将只显示最新的记录。

如何创建Chrome扩展

首先,我们需要创建一个空的文件夹,在那里我们将添加我们的HTML、CSS和JavaScript文件。

在这个文件夹中,让我们用这个HTML模板代码创建一个index.html文件。

<!DOCTYPE html>
<html>
<head>
    <title>Covid-19 Stats- UK</title>
    <meta charset="utf-8">
</head>
<body>
</body>
</html>

 现在,让我们在head标签中添加一个指向Bootstrap CDN的链接。我们将在这里使用Bootstrap框架,这样我们就不必在这个例子中编写一些额外的CSS。

<head>
    <title>Covid-19 Stats- UK</title>
    <meta charset="utf-8">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

在演示中,我们看到记录被显示为一个表。所以现在我们需要努力创建一个表。

<!DOCTYPE html>
<html>
<head>
    <title>Covid-19 Stats- UK</title>
    <meta charset="utf-8">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container mt-3" style="width: 450px;">
        <h2 class="text-center">Covid Latest Report-UK</h2>
        <table class="table table-bordered">
            <thead>
            <tr>
                <th>Date</th>
                <th>Country</th>
                <th>Confirmed</th>
                <th>Deaths</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td id="date"></td>
                <td id="areaName"></td>
                <td id="latestBy"></td>
                <td id="deathNew"></td>
            </tr>
            </tbody>
        </table>
    </div>
</body>
<script src="script.js"></script>
</html>

上面的代码创建了一个宽度为450px的表格。表中有四个不同的标题。DateCountryConfirmed, 和 Deaths

在这里,你可以看到每个表数据td都被分配了不同的ID。我们将在JavaScript中使用这些ID的值来更新表的数据。另外,在这里,我们在加载所有的HTML内容后,在最后加载了JavaScript。

现在,由于表格已经显示出来了,我们需要继续编写JavaScript,以便从API中获取数据。

让我们创建一个script.js文件并添加以下代码。

async function fetchData() {
    const res=await fetch ("https://api.coronavirus.data.gov.uk/v1/data");
    const record=await res.json();
    document.getElementById("date").innerHTML=record.data[0].date;
    document.getElementById("areaName").innerHTML=record.data[0].areaName;
    document.getElementById("latestBy").innerHTML=record.data[0].latestBy;
    document.getElementById("deathNew").innerHTML=record.data[0].deathNew;
}
fetchData();

现在,让我们来分解一下上述代码。

  • 这里我们使用的是名为fetchData的异步函数。
  • 该数据是从https://api.coronavirus.data.gov.uk/v1/data API中获取的。
  • JSON数据被存储在一个名为record的变量中。
  • 具有date、 areaName、 latestBy和deathNew等id的td的HTML内容被API的相应值所更新。

如果我们检查浏览器,就能看到以下结果。

Latest Covid Report of UK - Browser Preview

数据是从API中获取的,一旦API中的数据发生变化,它就会不断地更新。

Manifest.json文件

正如我们之前讨论的那样,构建Chrome扩展程序与构建任何网络应用程序类似。唯一不同的是,Chrome扩展程序需要一个manifest.json文件,我们在该文件中保存所有的配置。

manifest.json文件包含构建Chrome扩展程序所需的所有必要信息。它是扩展程序检查的第一个文件,所有东西都从这个文件中加载。

现在,让我们在根目录下创建一个manifest.json文件并添加以下代码。

{
    "name": "Covid-19 Stats UK",
    "version": "1.0.0",
    "description": "latest covid data of UK",
    "manifest_version": 3,
    "author": "Sampurna Chapagain",
    "action":{
        "default_popup": "index.html",
        "default_title": "Latest Covid Report"
    }
}

 Manifest.json

我们的 manifest.json 文件包含名称、版本、描述、manifest_version(本例中为 3,即最新的 manifest 版本)、作者和动作字段的值。在action字段中,有default_popup的值,其中包含HTML文件的路径,本例中为index.html。

你可以看一下这里,看看manifest.json文件的所有配置。

现在,由于我们还添加了manifest.json文件,我们已经准备好在Chrome浏览器中把这个项目作为一个扩展添加。

为此,我们需要去选择更多工具,然后从浏览器菜单中选择扩展,如下图所示。

Navigating to extensions in Chrome

选择扩展程序后,会重定向到Chrome的扩展程序页面。请确保在这里启用开发者模式。

 

一旦完成,你需要点击加载已解压的扩展程序按钮,这将允许我们在Chrome扩展商店中加载我们的项目。

现在,该扩展已在我们的Chrome扩展商店中提供。你也可以在浏览器中钉住该扩展,如下面的gif所示。

 

Pin extension to the browser

这个扩展只在你的浏览器中工作。如果你想在Chrome网络商店发布它,你可以按照这个链接。 

总结

如果你有一些HTML、CSS和JavaScript知识,你可以很容易地建立Chrome扩展。我希望读完这篇博文后,你会创建一些很酷的扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DSP-时域中的离散信号

目录 离散时间信号的表示: 离散信号的时域表示: 序列的长度: ​编辑 信号的能量和功率: 序列的基本运算 : 相乘 (product): 相加(addition): 放大(multiplication): 时移(time-shifting): 时间反转(time-reversal): 线性卷积: 抽样率转换: 有限长序列的运算: 离散…

Wireshark 实用篇2:Wireshark 抓包常用过滤命令

目录 前言 正文 一、根据 IP 地址过滤 二、根据端口过滤 三、根据协议过滤 四、根据 Payload Type 条件过滤 五、根据组合条件过滤 六、实例分析 前言 使用 Wireshark 工具进行网络抓包属于研发人员的基础技能&#xff0c;如果你还不了解&#xff0c;建议从现在开始…

RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.7 日志与监控

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级7 RabbitMQ 高级特性7.7 日志与监控7.7.1 RabbitMQ 日志7.7.2 web 管控台监控7.7.3 rabbitmqctl 管理和监控第二天 高级 7 RabbitMQ 高级特性 7.7 日志与监控 老师…

SpringBoot+Mybatis-Plus+Thymeleaf+Bootstrap分页页查询(前后端完整版开源学习)图书管理系统

目录分页主要逻辑&#xff0c;在3.7和3.81.准备工作1.1 参考博客1.2 项目结构2. 数据库3. 详细代码部分3.1 pom依赖3.2 application.yml3.3 BookMapper.xml3.4 BookMapper3.5 BookService 和 BookServiceImpl3.6 实体类entity book3.7控制层 BookController3.8 前端页面bookLis…

LabVIEW如何减少下一代测试系统中的硬件过时3

LabVIEW如何减少下一代测试系统中的硬件过时3 Initial System Configuration As shown in Figure 4, the test application is running on an NI PXIembedded controller with Windows XP. The PXI controller is connected to theAgilent 33220A signal generator through L…

只需几次点击即可创建一个Astra和LearnDash在线教育网站 – 简单快捷!

Astra为不喜欢从头开始设计网站的任何人提供了一个巨大的入门模板库。 这些网站是使用各种页面构建器制作的&#xff0c;例如 Elementor、Beaver Builder、Brizy 以及 Gutenberg——WordPress 的默认新编辑器。如果您喜欢这些网站中的任何一个&#xff0c;只需单击一下即可将其…

node.js+uni计算机毕设项目短视频管理小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等…

18、Mysql高级之日志

18、Mysql高级之日志 文章目录18、Mysql高级之日志1、错误日志2、二进制日志2.1、概述2.2、日志格式2.3、日志读取2.4、日志删除3、查询日志4、慢查询日志4.1、文件位置和格式4.2、日志的读取在任何一种数据库中&#xff0c;都会有各种各样的日志&#xff0c;记录着数据库工作的…

数据结构(1)前言

&#xff08;1&#xff09;学习数据结构前&#xff0c;需要掌握结构体和指针的使用&#xff0c;需要了解typedef这个关键字。对这部分知识欠缺的可以查看&#xff1a;C语言结构体详解&#xff1b;何为指针&#xff0c;与数组名有什么区别&#xff1b; &#xff08;2&#xff09…

一次性记录关键字,注释,字符串值,运算符,括号配对的位置,并设置自定义数据颜色。

未执行函数之前&#xff1a; 执行后参数未加数据&#xff1a; 执行后参数加上数据&#xff1a; 源代码&#xff1a; /// <summary> /// 一次性记录关键字&#xff0c;注释&#xff0c;字符串值&#xff0c;运算符&#xff0c;括号配对的位置,并设置自定义数据颜色 /// &l…

关于Spring的两三事:神奇的注解

一、前言 在之前的学习中我们介绍了注解实际上起到的是标记和注释的作用&#xff0c;其本身并不提供任何的逻辑处理能力。也就是说如果想让注解能够实现预期的作用&#xff0c;就必须给注解搭配一个能够读取并处理该注解的方法&#xff0c;这里为了方便描述我将这样一个方法定义…

小学生C++编程基础 课程11(共8题)

946.数的数字和(课程A&#xff09; 难度&#xff1a;1 登录 947.数的颠倒 ( 课程A&#xff09; 难度&#xff1a;1 登录 948.求8的个数 (课程A&#xff09; 难度&#xff1a;1 登录 949.删除数字0 (课程A&#xff09; 难度&#xff1a;1 登录 950.垒三角形 (课程A&#xff…

RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.6 延迟队列

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级7 RabbitMQ 高级特性7.6 延迟队列7.6.1 延迟队列概述7.6.2 代码实现7.6.3 小结第二天 高级 7 RabbitMQ 高级特性 7.6 延迟队列 7.6.1 延迟队列概述 【重点】 延…

Leetcode 剑指 Offer II 007. 数组中和为 0 的三个数

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i…

微信开放平台之第三方平台开发,从哪里入手?

大家好&#xff0c;我是悟空码字 疫情之下&#xff0c;最近有不少兄弟没有挺进决赛&#xff0c;半途成了小羊人&#xff0c;可谓是出师未捷身先死。话说回来&#xff0c;不管怎么样&#xff0c;尽量保护好自己&#xff0c;能越晚变羊越好。 开始说正事&#xff0c;不管是自己…

46_SDIO实验

目录 SDIO相关结构体 SDIO初始化结构体 SDIO命令初始化结构体 SDIO数据初始化结构体 硬件连接 实验源码 SDIO相关结构体 标准库函数对SDIO外设建立了三个初始化结构体&#xff0c;分别为SDIO初始化结构体SDIO_InitTypeDef, SDIO命令初始化结构体SDIO_CmdInitTypeDef和SD…

小技巧2:Python 实现阿拉伯数字转化为中文数字

大家好&#xff0c;我是Kamen Black君&#xff0c;今天给大家介绍一个小技巧&#xff1a;如何用Python 代码实现阿拉伯数字转化为中文数字。 都说光阴似箭&#xff0c;日月如梭&#xff0c;2022年的车轮很快也要驶向了终点。不知道大家在平常的生活中&#xff0c;有没有碰到过…

【Python】Beta分布详解

投硬币&#xff0c;硬币是正还是反&#xff0c;这属于两点分布的问题。 疯狂投硬币&#xff0c;正面出现的次数&#xff0c;服从二项分布&#xff1a;【Python】从二项分布到泊松分布 二项分布中&#xff0c;若特定时间内的伯努利试验次数趋于无穷大&#xff0c;那么在某一时…

【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)

文章目录一、进程创建1.1 认识系统调用 fork1.2 理解 fork 的返回值1.3 写时拷贝策略二、进程终止2.1 main 函数的返回值2.2 进程退出的几种情况(&#x1f31f;)2.3 进程退出码2.4 终止正常进程&#xff1a;return、exit、_exit ⭐2.5 站在 OS 角度&#xff1a;理解进程终止三、…

RV1126笔记二十:吸烟行为检测及部署<七>

若该文为原创文章,转载请注明原文出处。 部署到RV1126,Demo测试 一、介绍 通过训练转换后,得到了RKNN模型,接下来使用rknn_model_zoo里自带的C demo来测试模型是不是可以在RV1126上运行。 C demo直接编译是编译不过的,需要自己移植. 根据C demo提供的README,可以看出…