当前位置: 首页 > news >正文

【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.dtcms.com/a/334208.html

相关文章:

  • 如何在 MacOS 上安装 SQL Server
  • MySQL完整重置密码流程(针对 macOS)
  • 硬核北京 | 2025世界机器人大会“破圈”,工业智能、康养科技…… 亦庄上演“机器人总动员”
  • Flink Sql 按分钟或日期统计数据量
  • 中本聪思想与Web3的困境:从理论到现实的跨越
  • 存算分离与云原生:数据平台的新基石
  • 基于Kubernetes亲和性与反亲和性的Pod调度优化实践指南
  • Linux上配置环境变量
  • 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践01
  • Trae中`settings.json`文件的Java配置项功能详解(一)
  • Camera相机人脸识别系列专题分析之十九:MTK ISP6S平台FDNode原生代码
  • 【vscode使用说明】
  • Vue中的数据渲染【4】
  • Docker自定义镜像
  • 138-基于FLask的重庆市造价工程信息数据可视化分析系统
  • Chrome腾讯翻译插件transmart的安装
  • RK3588芯片在AR眼镜中的核心技术优势是什么?
  • VS Code配置MinGW64编译ALGLIB库
  • 新字符设备驱动实验
  • pytest tmpdir fixture介绍(tmpdir_factory)(自动在测试开始前创建一个临时目录,并在测试结束后删除该目录)
  • c# WebAssembly,在网页上能运行多线程,异步,锁,原子加,减等代码吗
  • springboot集成websocket
  • css实现圆角+边框渐变+背景半透明
  • 深入详解PCB布局布线技巧-去耦电容的摆放位置
  • 上位机知识篇---Linux日志
  • Python基础语法 从入门到精通
  • MATLAB基础训练实验
  • GitHub PR 提交流程
  • 车载控制器硬件电路-各电源轨和功能模块定义以及作用
  • 从冒泡到快速排序:探索经典排序算法的奥秘(二)