【JS】认识并实现一个chrome扩展程序

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍chrome扩展程序。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 扩展介绍
    • :blush:2. 环境安装与配置
    • :satisfied:3. 应用示例

😏1. 扩展介绍

Chrome扩展程序(Chrome Extensions)是为Google Chrome浏览器设计的小型软件程序,用于增强浏览器的功能或提供额外的服务。它们基于HTML、JavaScript和CSS技术开发,可通过Chrome网上应用商店(Chrome Web Store)安装。

核心功能与特点

  • 定制浏览体验:扩展程序可以修改网页内容、添加新功能或简化操作流程。
  • 轻量级设计:扩展程序通常体积小巧,运行时不占用过多系统资源。
  • 权限可控:安装时会明确告知所需权限,用户可自主管理。
  • 跨设备同步:登录Google账号后,扩展程序可在不同设备间同步。

常见类型

  • 生产力工具:如广告拦截器(uBlock Origin)、密码管理器(LastPass)。
  • 开发者工具:如JSON格式化工具、API测试插件(Postman)。
  • 社交增强:如社交媒体快捷分享按钮。
  • 网页美化:如暗黑模式插件(Dark Reader)。

😊2. 环境安装与配置

下面就自己写一个chrome扩展,安装直接在chrome浏览器加载即可。

另外,也可以打包自己的扩展程序为crx
在这里插入图片描述

😆3. 应用示例

下面给出一个时间&积分计算器的示例:
在这里插入图片描述
包含以下代码文件:
manifest.json

{"manifest_version": 3,"name": "Hello World Extension","version": "1.0","description": "A simple Chrome extension example","icons": {"16": "icons/test.png","48": "icons/test.png","128": "icons/test.png"},"action": {"default_popup": "popup.html","default_icon": "icons/test.png"},"permissions": []
}

popup.html

<!DOCTYPE html>
<html>
<head><title>Time & Points Tracker</title><link rel="stylesheet" href="popup.css">
</head>
<body><div class="container"><div class="funnel"><h2>Time Left</h2><div id="timeLeft">--:--:--</div></div><div class="points"><h2>Points Earned</h2><div id="pointsEarned">0</div></div></div><script src="popup.js"></script>
</body>
</html>

popup.js

// 时间段
const WORK_START_HOUR = 9;
const WORK_END_HOUR = 18;
const WORK_END_MINUTE = 30;
const TOTAL_POINTS = 10000;function updateDisplay() {const now = new Date();// --- 计算剩余时间 ---let endTime = new Date();endTime.setHours(WORK_END_HOUR, WORK_END_MINUTE, 0, 0);// 超出则显示 00:00:00if (now >= endTime) {document.getElementById("timeLeft").textContent = "00:00:00";document.getElementById("pointsEarned").textContent = TOTAL_POINTS;return;}// 计算剩余时间 HH:MM:SSconst timeLeftMs = endTime - now;const hours = Math.floor(timeLeftMs / (1000 * 60 * 60));const minutes = Math.floor((timeLeftMs % (1000 * 60 * 60)) / (1000 * 60));const seconds = Math.floor((timeLeftMs % (1000 * 60)) / 1000);document.getElementById("timeLeft").textContent = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;// --- 计算已获得积分 ---let startTime = new Date();startTime.setHours(WORK_START_HOUR, 0, 0, 0);// 未开始积分 = 0if (now < startTime) {document.getElementById("pointsEarned").textContent = "0";return;}// 计算总时长和已过去时长const totalWorkTimeMs = endTime - startTime;const elapsedTimeMs = now - startTime;// 积分计算const points = Math.floor((elapsedTimeMs / totalWorkTimeMs) * TOTAL_POINTS);document.getElementById("pointsEarned").textContent = Math.min(points, TOTAL_POINTS);
}// 初始加载时更新
updateDisplay();// 每秒刷新一次
setInterval(updateDisplay, 1000);

popup.css

body {width: 200px;padding: 15px;font-family: Arial, sans-serif;text-align: center;background: #f5f5f5;
}.container {display: flex;flex-direction: column;gap: 15px;
}.funnel, .points {background: white;padding: 10px;border-radius: 8px;box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}h2 {margin: 0 0 10px 0;font-size: 14px;color: #555;
}#timeLeft {font-size: 20px;font-weight: bold;color: #4285f4;
}#pointsEarned {font-size: 20px;font-weight: bold;color: #0f9d58;
}

请添加图片描述

以上。

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

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

相关文章

jeecgboot项目遇见的一些问题:

1.当你想修改项目的标题&#xff0c;前端将jeecgboot改成你想要的标题的时候&#xff0c;去前端的.env文件中进行修改。图1 修改标题根据路径找到文件&#xff0c;将网站标题改成自己需要的就可以正常显示了。图2 显示前图3 显示后2.在动态数组中&#xff0c;如果你知道数组需要…

项目里程碑设定有哪些方法

要科学设定项目里程碑&#xff0c;可采用以下几种方法&#xff1a;基于项目阶段划分法、关键交付物导向法、依赖关系链分析法、时间驱动法、风险节点识别法、目标成果导向法、资源约束分析法、客户验收节点设定法。其中&#xff0c;关键交付物导向法尤为实用。该方法以项目中必…

英伟达显卡驱动怎么更新 详细步骤教程

英伟达显卡驱动程序对于电脑的图形性能至关重要&#xff0c;它能确保显卡在游戏、设计、视频渲染等方面发挥最大性能。如果驱动过旧&#xff0c;可能会导致游戏运行不畅、软件不兼容&#xff0c;甚至系统出现错误。因此&#xff0c;定期更新英伟达显卡驱动非常必要。下面将为大…

基于单片机智能拐杖/导盲杖/老人防摔倒设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 该设计针对老年人及行动不便人群的需求&#xff0c;开发了一款集成单片机控制的智能拐杖。拐杖采…

Node.js完整安装配置指南(包含国内镜像配置)

Node.js完整安装配置指南&#xff08;包含国内镜像配置&#xff09; 一、Node.js安装 方法1&#xff1a;使用Chocolatey安装&#xff08;推荐&#xff09; # 安装最新LTS版本 choco install nodejs# 或安装指定版本 choco install nodejs --version20.11.0方法2&#xff1a;…

AI硬件 - AMD显卡架构演进及产品线

目录 一、AMD显卡架构演进总结 二、典型AMD AI显卡历代型号参数对比表 关键参数说明: 三、AMD 特供中国AI显卡产品线全览 1. 企业级Instinct系列(数据中心/科研) 2. 消费级AI加速显卡(开发/本地推理) 四、与NVIDIA显卡的AI性能对比 关键指标实测数据 五、模型框架…

论文阅读-Gated CRF Loss for Weakly Supervised Semantic Image Segmentation

文章目录1 背景2 模块2.1 部分交叉熵损失2.2 弱标签&#xff08;线/点&#xff09;2.3 Gated CRF Loss3 效果3.1 总体效果3.2 消融实验4 总结参考文献1 背景 全监督的语义分割需要对全图进行完全而精确的标注。当需要标注的目标在图像中较多&#xff0c;又或形状不规则&#x…

零墨云A4mini打印机设置电脑通过局域网络进行打印

文档时间&#xff1a;2025年8月 1.演示环境 操作系统版本&#xff1a;Windows11 打印机版本&#xff1a;零墨云A4mini 这款打印机打印的方式有蓝牙、远程云和局域网&#xff0c;这里演示的是电脑通过局域网打印 通过电脑版局域网(这个局域网是网络可达)打印之前&#xff0c…

ESP8266 入门(第 3 部分):使用 Arduino IDE 对 ESP8266 进行编程并刷新其内存

使用 Arduino IDE 对 ESP8266 进行编程并刷新其内存 这是我们之前 ESP 教程的延续的第三个教程,其中我们将学习使用 Arduino IDE(不使用 Arduino)对 ESP8266 进行编程和烧录 ESP8266。在前面的教程中,我们介绍了 WiFi 收发器ESP8266简介以及将 AT 命令与 ESP8266 结合使用。…

如何成功初始化一个模块

一、如何保证成功初始化一个模块&#xff08;以 UART 为例&#xff09;要成功初始化一个模块&#xff0c;请遵循以下步骤&#xff1a;在图形化界面中&#xff0c;首先配置外设模块。紧接着&#xff0c;配置使用到的外设模块的引脚&#xff08;这一点很重要&#xff0c;容易忘记…

Hive 存储管理测试用例设计指南

一、测试范围界定Hive 存储管理测试主要覆盖以下核心模块&#xff1a;内部表 / 外部表存储特性验证分区表 / 分桶表管理功能测试存储格式兼容性测试&#xff08;TextFile/ORC/Parquet 等&#xff09;数据加载与导出机制验证元数据与 HDFS 存储一致性校验异常场景与边界条件处理…

智芯微ZX6N60A—N沟道增强型功率MOSFET

主要特征&#xff1a; ID 6A Vdss 600V RDSON-typ &#xff08;VGS10V&#xff09; 1.4Ω特点&#xff1a; • 快速切换 • 低导通电阻 • 低门费 • 100%单脉冲雪崩能量测试应用范围&#xff1a; • 适配器和充电器的电源开关电路。芯片数据 • 外壳&#xff1a;模压塑料 …

latex|算法algorithm宏包和注意事项

LaTeX 中 algorithm 环境完整指南 在科研论文里&#xff0c;写清楚算法步骤通常需要用到 伪代码环境。最常见的选择有两个包&#xff1a; algorithm2e —— 功能最强大&#xff0c;适合期刊/学位论文algorithmicx algpseudocode —— 更灵活、可定制&#xff0c;常用于会议模板…

纯Qt结合ffmpeg实现本地摄像头采集/桌面采集/应用程序窗口采集/指定采集帧率和分辨率等

一、前言说明 ffmpeg的功能真的是包罗万象&#xff0c;除了基本的编解码&#xff0c;还有个专门的avdevice模块用来对本地设备的采集支持&#xff0c;最开始用到ffmpeg采集本地摄像头的缘由&#xff0c;还不是因为Qt不给力&#xff0c;Qt5开始有个qcamera类&#xff0c;但是只…

【论文笔记】Multi-Agent Based Character Simulation for Story Writing

论文信息 论文标题&#xff1a; Multi-Agent Based Character Simulation for Story Writing - In2Writing 2025 论文作者&#xff1a; Tian Yu, Ken Shi, Zixin Zhao, Gerald Penn 论文链接&#xff1a; https://aclanthology.org/2025.in2writing-1.9/ 论文领域&#xff1a;…

GaussianLSS

背景 BEV感知能够聚合多个传感器输入得到统一的空间表征&#xff0c;在3D感知、下游应用以及跨模态融合中发挥重要作用。现有的BEV感知分为2D反投影&#xff08;LSS&#xff09;以及3D投影&#xff08;BEVFormer&#xff09;&#xff0c;其中3D投影依赖于3D体素的投影&#xff…

卫生许可证识别技术:通过OCR与NLP实现高效合规管理,提升审核准确性与效率

在食品安全、公共卫生管理日益重要的今天&#xff0c;卫生许可证成为企业合规经营的关键凭证。传统人工审核方式效率低、易出错&#xff0c;而卫生许可证识别技术应运而生&#xff0c;正逐步革新监管与合规流程。下面深入解析这项技术的核心要素。核心技术原理卫生许可证识别本…

【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)

该文件是 Habitat-Lab&#xff08;Facebook Research 开发的 Embodied AI 模拟框架&#xff09;的核心配置文档&#xff0c;详细定义了 Habitat 配置系统&#xff08;基于 OmegaConf&#xff09;中所有可配置参数的层级结构、默认值、取值范围及功能说明。以下内容严格按文件结…

AI-调查研究-55-机器人 百年进化史:从Unimate到人形智能体的技术跃迁

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布&#xff01;“快的…

【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队

Python一键删除PDF任意页&#xff1a;输入页码秒出干净文件——再也不用在线裁剪排队 PDF删页, 零依赖脚本, 命令行秒用, 小白神器, 瑞士军刀 故事开场&#xff1a;一把瑞士军刀救了你 周一早高峰&#xff0c;老板发来 200 页 PDF&#xff1a; “把第 18、25、37 页删掉&#x…