快速上手:如何开发一个实用的 Edge 插件

news2024/11/30 0:23:26

在日常浏览网页时,背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片,并希望背景图片设置能够持久保存,本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页(Options),并介绍插件的上传与发布流程。

准备

先用yuanbao.tencent.com 生成插件logo。
然后用https://tool.tushuoit.com/favgen 转成不同尺寸png。
在这里插入图片描述

一、Edge插件概述

Microsoft Edge插件(或扩展)是基于Chromium内核的浏览器扩展,可以为浏览器添加新的功能或修改现有功能。开发Edge插件的核心技术栈包括JavaScript、HTML和CSS。

在本示例中,我们将开发一个简单的插件,通过它为网页添加自定义背景图片,并将背景图片URL保存在插件的选项页中,以便下次访问时能够自动加载。

二、插件结构与基本功能

首先,我们来看一下插件的基本结构和实现功能:

  • manifest.json:插件的配置文件,定义插件的信息和权限。
  • background.js:后台脚本,处理插件的核心逻辑。
  • content.js:内容脚本,注入网页中修改背景。
  • popup.html:插件图标的弹出页面,用户可以在此输入背景图片URL。
  • options.html:插件的设置页面,用于保存背景图片URL。

1. 创建插件目录

首先创建插件的文件夹,并在其中存放插件的所有文件:

mkdir custom-background-extension
cd custom-background-extension

2. 配置manifest.json

在插件根目录下创建manifest.json文件,设置插件的基本信息和权限。

{
  "manifest_version": 3,
  "name": "自定义Web背景图片",
  "version": "1.1",
  "description": "为你的网页添加个性化背景图片,并保存设置",
  "permissions": ["storage", "activeTab"],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ],
  "action": {
    "default_popup": "popup.html"
  },
  "options_page": "options.html"
}
  • permissions:需要使用storage权限来存储背景设置。
  • background:后台脚本负责初始化插件逻辑。
  • content_scripts:内容脚本注入页面来修改背景。
  • options_page:插件的选项页,用来保存背景设置。

3. 背景设置与保存

我们将使用浏览器的localStorage API来保存用户的背景设置,并在用户每次打开插件时加载保存的设置。

background.js

background.js文件中,我们监听插件的安装事件,并初始化默认背景设置。

chrome.runtime.onInstalled.addListener(() => {
  console.log('自定义背景插件已安装!');
  
  // 初始化背景设置,默认背景URL
  chrome.storage.local.get(['backgroundUrl'], (result) => {
    if (!result.backgroundUrl) {
      chrome.storage.local.set({ backgroundUrl: 'https://example.com/default-background.jpg' });
    }
  });
});
content.js

content.js负责动态更新网页的背景图片,读取保存的背景URL并应用到当前页面。

chrome.storage.local.get(['backgroundUrl'], (result) => {
  if (result.backgroundUrl) {
    document.body.style.backgroundImage = `url(${result.backgroundUrl})`;
    document.body.style.backgroundSize = 'cover';
    document.body.style.backgroundPosition = 'center';
  }
});

4. 配置popup.html

popup.html提供一个用户界面,允许用户输入新的背景图片URL。用户可以点击按钮将新的URL保存到插件的存储中。

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>自定义背景图片</title>
  <style>
    body {
      width: 200px;
      padding: 10px;
      font-family: Arial, sans-serif;
    }
    input {
      width: 100%;
      padding: 5px;
    }
    button {
      width: 100%;
      padding: 5px;
      margin-top: 10px;
      background-color: #0078d4;
      color: white;
      border: none;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <h3>背景图片</h3>
  <input type="text" id="bgUrl" placeholder="输入背景图片URL">
  <button id="changeBg">更换背景</button>

  <script>
    document.getElementById('changeBg').addEventListener('click', () => {
      const url = document.getElementById('bgUrl').value;
      if (url) {
        chrome.storage.local.set({ backgroundUrl: url }, () => {
          alert('背景已更新!');
        });
      }
    });
  </script>
</body>
</html>

5. 配置options.html

options.html页面允许用户在插件的设置中管理背景设置。我们将提供一个简单的界面来显示和更改背景URL。

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>插件设置</title>
</head>
<body>
  <h3>背景图片设置</h3>
  <label for="bgUrl">背景图片URL:</label>
  <input type="text" id="bgUrlInput">
  <button id="saveBg">保存背景设置</button>

  <script>
    // 加载当前保存的背景URL
    chrome.storage.local.get(['backgroundUrl'], (result) => {
      document.getElementById('bgUrlInput').value = result.backgroundUrl || '';
    });

    // 保存新的背景URL
    document.getElementById('saveBg').addEventListener('click', () => {
      const url = document.getElementById('bgUrlInput').value;
      if (url) {
        chrome.storage.local.set({ backgroundUrl: url }, () => {
          alert('背景设置已保存!');
        });
      }
    });
  </script>
</body>
</html>

6. 加载插件到Edge浏览器

  1. 打开Edge浏览器,进入edge://extensions/页面。
  2. 开启“开发者模式”。
  3. 点击“加载已解压的扩展”按钮,选择插件文件夹。
  4. 插件安装成功后,可以在浏览器工具栏中看到插件图标,点击它即可更改背景。

三、插件发布与上传流程

一旦开发完成并经过测试,你可能希望将插件发布到Microsoft Edge扩展商店供更多用户使用。以下是发布插件的基本流程:

1. 注册开发者账号

访问Microsoft Edge Add-ons商店,并注册一个开发者账号。

2. 打包插件

在插件文件夹中,运行以下命令来打包插件:

zip -r custom-background-extension.zip *

3. 提交插件

登录Microsoft Edge Add-ons开发者后台,点击“提交扩展”,选择打包好的.zip文件,并填写相关的插件信息。提交审核后,插件将被发布。

4. 插件更新

如果以后需要更新插件,可以在后台管理页面上传新版本的插件文件。每次更新需要重新提交审核。

四、总结

通过这篇文章,我们创建了一个自定义背景图片的Edge插件,并学习了如何将背景设置保存在插件的存储中,以便长期使用。我们还介绍了插件的发布流程,让你可以将插件分享给更多的用户。

后续扩展

  • 背景上传功能:可以加入上传背景图片的功能,允许用户直接从本地选择图片作为背景。
  • 其他定制选项:支持更多的背景特效,例如背景模糊、视频背景等。

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

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

相关文章

【Maven】功能和核心概念

1. 什么是Maven 1.1 Maven的概念 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具&#xff0c;专注服务于 Java 平台的项目构建和依赖管理。 1.2 为什么要使用Maven&#xff1f; 在项目开发中&#xff0c;我们需要引用各种 jar 包&#xff0c;引用的 jar 包可能有…

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

视频汇聚平台Liveweb国标GB28181视频平台监控中心设计

在现代安防视频监控领域&#xff0c;Liveweb视频汇聚平台以其卓越的兼容性和灵活的拓展能力&#xff0c;为用户提供了一套全面的解决方案。该平台不仅能够实现视频的远程监控、录像、存储与回放等基础功能&#xff0c;还涵盖了视频转码、视频快照、告警、云台控制、语音对讲以及…

hubu新星杯实践能力赛模拟赛web/Misc-wp

ez_eval <?php highlight_file(__FILE__); error_reporting(0);$hubu $_GET[hubu];eval($hubu);?> 先进行代码审计&#xff0c;GET传参hubu&#xff0c;并执行命令&#xff0c;没有任何绕过&#xff0c;放开手脚去做 payload: ?hubusystem(cat /f*); #直接rcerc…

【前端】跨域问题与缓存

报错如下&#xff1a; 原因&#xff1a; 浏览器 缓存跨域&#xff0c;顾名思义是由于浏览器的缓存机制导致的一种跨域情况。这种跨域一般会出现在浏览器通过一些无视跨域的标签和css(如img、background-image)缓存了一些图片资源之后&#xff0c;当再次发起图片请求时&#xff…

抓包之OSI七层模型以及TCPIP四层模型

写在前面 本文看下OSI七层模型以及TCP/IP四层网络模型&#xff0c;并尝试使用wireshark进行验证。 1&#xff1a;OSI七层网络模型和TCP/IP四层模型 全称&#xff1a;open system interconnection。 需要注意OSI七层模型最终是没有落地的&#xff0c;最终落地的是与之类似的…

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

MTK 展锐 高通 sensorhub架构

一、MTK平台 MTK框架可以分为两部分&#xff0c;AP和SCP。 AP是主芯片&#xff0c;SCP是协处理器&#xff0c;他们一起工作来处理sensor数据。 SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器&#xff0c;MTK SCP选择freeRTOS作为操作系统&#xff0c…

视觉语言模型(VLM)学习笔记

目录 应用场景举例 VLM 的总体架构包括&#xff1a; 深度解析&#xff1a;图像编码器的实现 图像编码器&#xff1a;视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑&#xff1a;你输入 “生成一张…

[AutoSar]BSW_Diagnostic_007 BootLoader 跳转及APP OR boot response 实现

目录 关键词平台说明背景一、Process Jump to Bootloader二、相关函数和配置2.1 Dcm_GetProgConditions()2.2 Dcm_SetProgConditions() 三、如何实现在APP 还是BOOT 中对10 02服务响应3.1 配置3.2 code 四、报文五、小结 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、diagno…

如何启用本机GPU硬件加速猿大师播放器网页同时播放多路RTSP H.265 1080P高清摄像头RTSP视频流?

目前市面上主流播放RTSP视频流的方式是用服务器转码方案&#xff0c;这种方案的好处是兼容性更强&#xff0c;可以用于不同的平台&#xff0c;比如&#xff1a;Windows、Linux或者手机端&#xff0c;但是缺点也很明显&#xff1a;延迟高、播放高清或者同时播放多路视频视频容易…

设置ip和代理DNS的WindowsBat脚本怎么写?

今天分享一个我们在工作时&#xff0c;常见的在Windows中通过批处理脚本&#xff08;.bat 文件&#xff09;来设置IP地址、代理以及DNS 相关配置的示例&#xff0c;大家可以根据实际需求进行修改调整。 一、设置静态IP地址脚本示例 以下脚本用于设置本地连接&#xff08;你可…

深度学习-49-AI应用实战之基于HyperLPR的车牌识别

文章目录 1 车牌识别系统1.1 识别原理1.1.1 车牌定位1.1.2 字符识别2 实例应用2.1 安装hyperlpr32.2 识别结果2.3 可视化显示2.4 结合streamlit3 附录3.1 PIL.Image转换成OpenCV格式3.2 OpenCV转换成PIL.Image格式3.3 st.image嵌入图像内容3.4 参考附录1 车牌识别系统 车牌识别…

基于深度学习的手势识别算法

基于深度学习的手势识别算法 概述算法原理核心逻辑效果演示使用方式参考文献 概述 本文基于论文 [Simple Baselines for Human Pose Estimation and Tracking[1]](ECCV 2018 Open Access Repository (thecvf.com)) 实现手部姿态估计。 手部姿态估计是从图像或视频帧集中找到手…

【Linux】-操作系统

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;深入代码世界&#xff0c;了解掌握 Linux 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ​​ 一、冯•诺依曼架构&#xff…

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

Mybatis集成篇(一)

Spring 框架集成Mybatis 目前主流Spring框架体系中&#xff0c;可以集成很多第三方框架&#xff0c;方便开发者利用Spring框架机制使用第三方框架的功能。就例如本篇Spring集成Mybatis 简单集成案例&#xff1a; Config配置&#xff1a; Configuration MapperScan(basePack…

C51相关实验

C51相关实验 LED (P2 / 0~7)蜂鸣器 (P2^5)数码管 (P0 0~7 段 &#xff0c;P2 2~4 位)独立按键 &#xff08;P3^1 P3^0 P3^2 P3^3&#xff09;直流电机 (J47 5v 01~04)综合实验矩阵按键 (P1组 0~7)LED点阵 LED (P2 / 0~7) //功能&#xff1a;1.让开发板的LED全亮&#xff0c;2,…

C++语法·叭

阁下何不乘风起&#xff0c;扶摇直上九万里。 qi fei 目录 内存管理 分区介绍 1.栈区&#xff1a; 2.内存映射段&#xff1a; 3.堆&#xff1a; 4.数据段&#xff1a; 5.代码段&#xff1a; 补充&#xff1a; C内存管理&#xff08;简略回忆&#xff09; C内存…

数据库期末复习题库

1. Mysql日志功能有哪些? 记录日常操作和错误信息&#xff0c;以便了解Mysql数据库的运行情况&#xff0c;日常操作&#xff0c;错误信息和进行相关的优化。 2. 数据库有哪些备份方法 完全备份&#xff1a;全部都备份一遍表备份&#xff1a;只提取数据库中的数据&#xff0…