谷歌插件之一键关闭同域名页面

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

谷歌插件之一键关闭同域名页面

    • 前言
    • 项目结构
      • `mainfest.json`
      • `backgroud.js`
    • 项目实现
    • 效果展示
    • 展望

前言

在日常的网页浏览中,我们常常会打开多个相同域名的页面,特别是在进行某些重复性工作或者浏览新闻网站时,这种情况尤为常见。手动关闭这些页面既费时又费力。为了解决这个问题,我们可以开发一个简单的谷歌插件,实现一键关闭所有同域名的页面,极大地提升浏览效率。本文将带你一步一步完成这个插件的开发过程。

项目结构

创建一个新的文件夹,如close-same-domain-tabs,并在其中创建以下文件:

mainfest.json

下面是manifest.json文件中常见字段的详细讲解:

  1. manifest_version
"manifest_version": 3
  • 描述:指定清单文件的版本。目前,Chrome浏览器支持两个版本:2和3。推荐使用最新的版本3,因为它包含了安全性和性能的改进。
  1. name
"name": "Close Same Domain Tabs"
  • 描述:插件的名称,将显示在Chrome扩展管理页面和插件商店中。
  1. version
"version": "1.0"
  • 描述:插件的版本号,必须是三段式(major.minor.patch),每次更新插件时需要增加版本号。
  1. description
"description": "一键关闭所有同域名的页面"
  • 描述:插件的简短描述,向用户说明插件的用途。
  1. permissions
"permissions": ["tabs"]
  • 描述:插件运行时所需的权限。tabs权限允许插件访问和操作浏览器中的标签页。
  • 常见权限
    • "activeTab":当前活动标签的权限。
    • "storage":访问插件的本地存储。
    • "http://*/*""https://*/*":访问所有HTTP和HTTPS网址。
  1. background
"background": {
  "service_worker": "background.js"
}
  • 描述:定义插件的后台脚本。后台脚本在插件加载时运行,用于处理插件的核心逻辑。
  • 字段
    • service_worker:指定背景脚本文件(仅在Manifest V3中使用)。
    • scripts:指定背景脚本文件(用于Manifest V2)。
  1. action
"action": {
  "default_popup": "popup.html",
  "default_icon": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  }
}
  • 描述:定义插件的图标和弹出页面。
  • 字段
    • default_popup:指定点击插件图标时显示的HTML文件。
    • default_icon:指定插件图标的不同尺寸。
  1. icons
"icons": {
  "16": "icon16.png",
  "48": "icon48.png",
  "128": "icon128.png"
}
  • 描述:定义插件的图标。
  • 字段
    • 1648128:分别表示16x16、48x48和128x128像素的图标文件路径。
  1. optional_permissions
"optional_permissions": ["tabs"]
  • 描述:定义可选权限,用户可以在运行时选择授予或不授予这些权限。
  1. content_scripts
"content_scripts": [
  {
    "matches": ["<all_urls>"],
    "js": ["content.js"]
  }
]
  • 描述:定义内容脚本,注入到指定页面中。
  • 字段
    • matches:指定内容脚本匹配的URL模式。
    • js:指定注入的JavaScript文件。
  1. options_page
"options_page": "options.html"
  • 描述:指定插件的选项页面,用户可以在扩展管理页面中访问。
  1. browser_action
"browser_action": {
  "default_popup": "popup.html",
  "default_icon": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  }
}
  • 描述:用于定义浏览器操作(类似于action,但在Manifest V2中使用)。
  1. web_accessible_resources
"web_accessible_resources": [
  {
    "resources": ["popup.html"],
    "matches": ["<all_urls>"]
  }
]
  • 描述:定义插件中的哪些资源可以从网页中访问。
  1. content_security_policy
"content_security_policy": {
  "extension_pages": "script-src 'self'; object-src 'self'"
}
  • 描述:定义内容安全策略,确保插件的安全性。

通过了解这些字段及其用途,你可以更好地理解和配置manifest.json文件,从而创建功能丰富且安全的Chrome插件。

backgroud.js

在谷歌插件开发中,background.js 扮演着非常重要的角色,它主要用于处理插件的后台逻辑和事件监听。让我们详细地了解一下它在谷歌插件中的作用:

  1. 作为后台页面运行

谷歌插件中的 background.js 作为一个后台页面,始终在插件安装后运行,并且可以持续监听和处理事件,即使用户没有直接与插件的界面交互也可以执行任务。

  1. 扩展功能的初始化和处理
  • 初始化任务:通过 chrome.runtime.onInstalled.addListener 监听器,可以在插件安装时执行初始化任务,如设置默认值、注册默认设置等。

  • 事件处理:使用 chrome.action.onClicked.addListener 监听器,可以捕获用户点击插件图标的事件,并执行相应的操作。

  1. 管理和控制标签页
  • 查询标签页:通过 chrome.tabs.query 方法,可以获取当前窗口中的所有标签页,从而实现对标签页的管理和操作。

  • 关闭标签页:使用 chrome.tabs.remove 方法可以关闭指定的标签页,这在插件需要根据特定逻辑自动关闭标签页时特别有用。

  1. 监听和响应外部消息
  • 消息通信:可以通过 chrome.runtime.onMessage.addListener 监听器来接收来自其他插件页面或者内容脚本的消息,实现插件内部的通信和协调。

  • 与内容脚本的交互:通过 chrome.runtime.connectchrome.runtime.onConnect.addListener 方法,可以与内容脚本建立长连接,实现跨页面的数据传输和操作。

  1. 实现长时间运行的任务

由于 background.js 是作为一个后台页面运行的,它可以长时间保持活动状态,处理复杂的任务和逻辑,比如监控网络请求、数据持久化、周期性的任务等,这些任务通常是用户界面不可见的但对插件功能至关重要的部分。

  1. 优化资源使用

谷歌浏览器对每个插件运行的后台页面有资源使用限制,background.js 的设计需要考虑到优化资源使用,避免长时间占用过多的内存和CPU,以确保不影响用户的浏览体验。

项目实现

  • 打开chrome://extensions/

  • 点击“加载已解压的扩展程序”按钮,选择项目文件夹。

  • 插件加载后,在浏览器工具栏会出现插件的图标。

  • 点击图标,弹出窗口将出现,点击“关闭所有同域名页面”按钮,测试插件功能。

效果展示

ezgif-6-4079c7448d

展望

如有需要可以关注下方公众号回复google-close-domain获取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【手把手教你使用cgroup配置,十分钟就会】

手把手教你使用cgroup配置&#xff0c;十分钟就会 什么是cgroupcgroup中的参数概念及原理 以 memory为例看下如何配置配置内存限制写一个内存申请脚本执行脚本测试结束语 什么是cgroup cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制&#xff0c…

论文降痕降重全攻略:从技巧到工具,助你轻松应对学术挑战

AIGC降重工具&#xff1a;快速降低论文查重率 高查重率是许多毕业生的困扰。通常&#xff0c;高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法&#xff0c;如修改文本和增添原创内容&#xff0c;虽必要但耗时且成效不一。 鉴于此&#xff0c;应用AI工具进…

未来互联网的新篇章:深度解析Web3技术

随着技术的不断演进&#xff0c;Web3正逐渐成为引领未来互联网发展的关键驱动力。本文将深入探讨Web3技术的核心概念、关键特征以及其对未来互联网生态的深远影响&#xff0c;旨在帮助读者全面理解和把握这一新兴技术的发展方向和潜力。 1. Web3的基本概念和演进 Web3并非简单…

WindChill软件许可优化解决方案

WindChill软件介绍 WindChill作为PLM系统&#xff0c; 提供了帮助制造商在产品生命周期的各个阶段管理自己的产品的完整功能&#xff0c;其功能强大、高性能的体系结构正是为当今的全球环境而设计的&#xff0c;帮助公司提高生产效率并改善产品质量和性能。 WindChill许可问题…

每日一练 - 理解IGMP组播组信息

下面是路由器 RTB 的部分输出信息&#xff0c; 关于输出信息描述错误的是A.接口上动态加入的组播组个数是 1 B.加入的组播组地址是 225.1.1.2 C.dsplay igmp group 命令用来查看 IGMP 组播组信息,包括通过成员报告动态加入的组播组和通过命令行静态加入的组播组信息 D.最后发…

让你的终端出现花哨明了的打印

本文代码使用较为简单&#xff0c;主要就是为了高亮打印&#xff0c;直接用即可 代码如下&#xff1a; /*** file cout.h* author BigDavid* brief * version 0.1* date 2024-07-10* * copyright Copyright (c) 2024* */ #pragma once #include<stdio.h>#include<uni…

自学鸿蒙HarmonyOS的ArkTS语言<六>警告弹窗AlertDialog和列表选择弹窗ActionSheet

一、警告弹窗 ... Button(点击我可以获取一个警告弹窗).onClick(() > {AlertDialog.show({title: 我是弹窗标题,subtitle: 我是副标题,message: 我是弹窗内容,autoCancel: true, // 点击遮罩层是否关闭alignment: DialogAlignment.Center, // 弹窗位置offset: { dx: 0, dy:…

手机通讯录大营救,恢复sim卡联系人的3个重要方法

在数字化世界的浩瀚海洋中&#xff0c;手机通讯录就像一艘承载着人际关系的生命之船。然而&#xff0c;当这艘船遭遇风浪&#xff0c;即sim卡上的联系人信息意外丢失时&#xff0c;我们该如何进行一场惊心动魄的大营救&#xff0c;找回那些珍贵的联系人呢&#xff1f;别担心&am…

springboot服装购物商城系统-计算机毕业设计源码35058

摘要 服装购物商城系统小程序&#xff0c;依托Spring Boot框架的强大支持&#xff0c;为用户呈现了一个功能丰富、体验流畅的在线购物平台。该系统不仅涵盖了商品展示、用户注册登录、购物车管理、订单处理、支付集成等核心购物流程&#xff0c;还引入了个性化推荐算法&#xf…

排序(一)——冒泡排序、直接插入排序、希尔排序(BubbleSOrt,InsertSort,ShellSort)

欢迎来到繁星的CSDN&#xff0c;本期的内容主要包括冒泡排序(BubbleSort&#xff09;&#xff0c;直接插入排序(InsertSort)&#xff0c;以及插入排序进阶版希尔排序&#xff08;ShellSort&#xff09;。 废话不多说&#xff0c;直接上正题&#xff01; 一、冒泡排序 冒泡排序…

Lumos学习王佩丰Excel第四讲:排序与选择

一、排序 1、简单排序&#xff1a;不要选中一列排序&#xff0c;不然只是局部排序&#xff0c;其他数据都会发生错乱。 2、多条件排序 3、2003版本中超过3个排序条件时如何处理&#xff1a;从最后一个条件到第一个条件倒着按照要求依次排序。 4、按颜色排序 5、自定义排序次序…

探索Kotlin:从K1到K2

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 嘿&#xff0c;小伙伴们&#xff01;今天我们来聊聊Kotlin&#xff0c;这个在安卓开发圈里越来越火的编程语言。…

YoloV8改进策略:卷积篇|Kan行天下之GRAM,KAN遇见Gram多项式V2版本

GRAM&#xff08;GRAM可能是一个新提出的模型或方法的缩写&#xff0c;这里我们根据上下文进行解释&#xff09;受到诸如TorchKAN和ChebyKAN等Kolmogorov-Arnold网络&#xff08;KAN&#xff09;替代方案的启发。GRAM引入了一种简化的KAN模型&#xff0c;但同时利用了Gram多项式…

paddla模型转gguf

在使用ollama配置本地模型时&#xff0c;只支持gguf格式的模型&#xff0c;所以我们首先需要把自己的模型转化为bin格式&#xff0c;本文为paddle&#xff0c;onnx&#xff0c;pytorch格式的模型提供说明&#xff0c;safetensors格式比较简单请参考官方文档&#xff0c;或其它教…

Docker存储目录问题,如何修改Docker默认存储位置?(Docker存储路径、Docker存储空间)etc/docker/daemon.json

文章目录 如何更改docker默认存储路径&#xff1f;版本1&#xff08;没测试&#xff09;版本2&#xff08;可行&#xff09;1. 停止 Docker 服务&#xff1a;2. 创建新的存储目录&#xff1a;3. 修改 Docker 配置文件&#xff1a;4. 移动现有的 Docker 数据&#xff1a;5. 重新…

【Pytorch】Conda环境下载慢换源/删源/恢复默认源

文章目录 背景临时换源永久换源打开conda配置condarc换源执行配置 命令行修改源添加源查看源 删源恢复默认源使用示范 背景 随着实验增多&#xff0c;需要分割创建环境的情况时有出现&#xff0c;在此情况下使用conda create --name xx python3.10 pytorch torchvision pytorc…

香港紧缺什么类型人才?如何通过香港优才计划去香港就业?

香港目前紧缺多种类型的人才&#xff0c;这些需求反映在不同行业和专业领域。以下是根据最新信息整理的紧缺人才概览&#xff1a; 资讯科技&#xff08;IT&#xff09;人才&#xff1a;香港在IT领域&#xff0c;尤其是人工智能、云计算、软件开发、数据分析、用户体验设计&…

基于4G、5G和卫星宽带的应急通信车载聚合路由器组网方案

应急指挥车、现场应急指挥系统作为整个应急指挥平台的主要组成部分&#xff0c;被广泛用于救灾抢险,安全保障等特殊场景&#xff0c;可通过应急指挥车或现场应急指挥系统与后方指挥中心间传输音视频信息&#xff0c;实现现场与指挥中心的实时通信&#xff0c;进行视频会议和远程…

通用代码生成器模板体系,域对象,枚举和动词算子

通用代码生成器模板体系&#xff0c;域对象&#xff0c;枚举和动词算子 通用代码生成器或者叫动词算子式通用目的代码生成器是一组使用Java编写的通用代码生成器。它们的原理基于动词算子和域对象的笛卡尔积。它们没有使用FreeMarker和或者Velocity等现成的文件式模板引擎。而…

win11下部署Jenkins,build c#项目

一个c#的项目&#xff0c;由于项目经理总要新版本测试&#xff0c;以前每次都是手动出包&#xff0c;现在改成jenkins自动生成&#xff0c;节省时间。 一、下载Jenkins&#xff0c; 可以通过清华镜像下载Index of /jenkins/windows-stable/ | 清华大学开源软件镜像站 | Tsingh…