在日常的网页浏览中,我们常常会打开多个相同域名的页面,特别是在进行某些重复性工作或者浏览新闻网站时,这种情况尤为常见。手动关闭这些页面既费时又费力。为了解决这个问题,我们可以开发一个简单的谷歌插件,实现一键关闭所有同域名的页面,极大地提升浏览效率。本文将带你一步一步完成这个插件的开发过程。
创建一个新的文件夹,如close-same-domain-tabs
,并在其中创建以下文件:
mainfest.json
下面是
manifest.json
文件中常见字段的详细讲解:
"manifest_version": 3
"name": "Close Same Domain Tabs"
"version": "1.0"
"description": "一键关闭所有同域名的页面"
"permissions": ["tabs"]
tabs
权限允许插件访问和操作浏览器中的标签页。"activeTab"
:当前活动标签的权限。"storage"
:访问插件的本地存储。"http://*/*"
和"https://*/*"
:访问所有HTTP和HTTPS网址。"background": {
"service_worker": "background.js"
}
service_worker
:指定背景脚本文件(仅在Manifest V3中使用)。scripts
:指定背景脚本文件(用于Manifest V2)。"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
}
default_popup
:指定点击插件图标时显示的HTML文件。default_icon
:指定插件图标的不同尺寸。"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
16
、48
、128
:分别表示16x16、48x48和128x128像素的图标文件路径。"optional_permissions": ["tabs"]
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
matches
:指定内容脚本匹配的URL模式。js
:指定注入的JavaScript文件。"options_page": "options.html"
"browser_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
}
action
,但在Manifest V2中使用)。"web_accessible_resources": [
{
"resources": ["popup.html"],
"matches": ["<all_urls>"]
}
]
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self'"
}
通过了解这些字段及其用途,你可以更好地理解和配置manifest.json
文件,从而创建功能丰富且安全的Chrome插件。
backgroud.js
在谷歌插件开发中,background.js
扮演着非常重要的角色,它主要用于处理插件的后台逻辑和事件监听。让我们详细地了解一下它在谷歌插件中的作用:
谷歌插件中的 background.js
作为一个后台页面,始终在插件安装后运行,并且可以持续监听和处理事件,即使用户没有直接与插件的界面交互也可以执行任务。
chrome.runtime.onInstalled.addListener
监听器,可以在插件安装时执行初始化任务,如设置默认值、注册默认设置等。
chrome.action.onClicked.addListener
监听器,可以捕获用户点击插件图标的事件,并执行相应的操作。
chrome.tabs.query
方法,可以获取当前窗口中的所有标签页,从而实现对标签页的管理和操作。
chrome.tabs.remove
方法可以关闭指定的标签页,这在插件需要根据特定逻辑自动关闭标签页时特别有用。
chrome.runtime.onMessage.addListener
监听器来接收来自其他插件页面或者内容脚本的消息,实现插件内部的通信和协调。
chrome.runtime.connect
和 chrome.runtime.onConnect.addListener
方法,可以与内容脚本建立长连接,实现跨页面的数据传输和操作。
由于 background.js
是作为一个后台页面运行的,它可以长时间保持活动状态,处理复杂的任务和逻辑,比如监控网络请求、数据持久化、周期性的任务等,这些任务通常是用户界面不可见的但对插件功能至关重要的部分。
谷歌浏览器对每个插件运行的后台页面有资源使用限制,background.js
的设计需要考虑到优化资源使用,避免长时间占用过多的内存和CPU,以确保不影响用户的浏览体验。
chrome://extensions/
。