谷歌插件之一鍵關閉同域名頁面

歡迎來到我的博客,代碼的世界里,每一行都是一個故事


在這里插入圖片描述

🎏:你只管努力,剩下的交給時間

🏠 :小破站

谷歌插件之一鍵關閉同域名頁面

    • 前言
    • 項目結構
      • `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獲取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/45147.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45147.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45147.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

13019.CUDA問題積累

文章目錄 1 內存不斷增長的問題1.1 主機從GPU拷貝內存1.1.1 htop 內存增長到一定階段后&#xff0c;保持穩定 1.2 GPU拷貝到Host修改之后內存穩定無變化1.3 結論 2 主機與GPU數據拷貝方案2.1 cudaMemcpy 拷貝內存2.2 cudaMemcpyAsync 異步數據拷貝2.3 采用多線程拷貝技術2.3.1 …

群主必學!輕松Get如何解散微信群的技巧

作為一個微信群的群主&#xff0c;解散群聊可能是你需要掌握的重要技能之一。不管是因為群聊的目的已經達成&#xff0c;還是因為群成員過少或不活躍&#xff0c;了解如何解散微信群都能幫助你更好地管理你的群聊。 如何解散微信群&#xff1f;本文將為您提供一些簡單易行的技…

代碼隨想錄算法訓練營第五十天| 739. 每日溫度、496.下一個更大元素 I、503.下一個更大元素II

739. 每日溫度 題目鏈接&#xff1a; 739. 每日溫度 文檔講解&#xff1a;代碼隨想錄 狀態&#xff1a;不會 思路&#xff1a; 這道題需要找到下一個更大元素。 使用棧來存儲未找到更高溫度的下標&#xff0c;那么棧中的下標對應的溫度從棧底到棧頂是遞減的。這意味著&#xff…

Redis數據同步

文章簡單介紹基于redis-shake的redis數據同步&#xff0c;該工具基于每個節點同步數據&#xff0c;即每個主節點需同步一次&#xff0c;才能完成整個redis集群的數據同步。 1、redis節點操作 ### 查看redis版本 ./bin/redis-server --version### 登錄redis ./bin/redis-cli -…

改變Ubuntu的Tab沒有縮進4格(Makefile)

1.vim里的Tab 用vi指令打開這個文件&#xff0c;沒有的話就新創建一個 vi ~/.vimrc在打開的文件中輸入以下兩行 1 set tabstop42 set shiftwidth4 ~ Esc &#xff1a; x&#xff0c;保存并退出即可 資料來源&#xff1a; 2024年5月21日-vi/vim …

Linux Ubuntu MySQL環境安裝

1. 更新軟件源 首先&#xff0c;確保你的Ubuntu系統已經更新了軟件源列表&#xff0c;以便能夠下載到最新的軟件包。打開終端并輸入以下命令&#xff1a; sudo apt update 2. 安裝MySQL服務器 打開終端并輸入以下命令來安裝MySQL服務器 sudo apt install mysql-server 在…

一個便捷的web截圖庫~【送源碼】

隨著時間的發展&#xff0c;前端開發的范圍越來越廣&#xff0c;能夠實現的功能也越來越多&#xff0c;要實現的功能也五花八門&#xff0c;今天就給大家介紹一個web截圖庫,讓前端也能實現截圖功能—— js-web-screen-shot js-web-screen-shot js-web-screen-shot 是一個基于 …

嵌入式板級支持包(BSP)80道面試題及參考答案(3萬字長文)

目錄 解釋什么是通用輸入輸出(GPIO)接口及其在BSP中的作用。 描述SPI接口的主要特點和用途。 說明IC總線協議的工作原理。 如何在BSP中配置一個UART接口? USB設備控制器在BSP中的初始化步驟是什么? 以太網接口如何在BSP中被支持? 什么是SDIO,它在哪些場景下會被使…

語言模型演進:從NLP到LLM的跨越之旅

在人工智能的浩瀚宇宙中&#xff0c;自然語言處理&#xff08;NLP&#xff09;一直是一個充滿挑戰和機遇的領域。隨著技術的發展&#xff0c;我們見證了從傳統規則到統計機器學習&#xff0c;再到深度學習和預訓練模型的演進。如今&#xff0c;我們站在了大型語言模型&#xff…

【接口設計】如何設計統一 RESTful 風格的數據接口

如何設計統一 RESTful 風格的數據接口 1.版本控制1.1 通過 URL1.2 通過自定義請求頭1.3 通過 Accept 標頭 2.過濾信息3.確定 HTTP 的方法4.確定 HTTP 的返回狀態5.定義統一返回的格式 近年來&#xff0c;隨著移動互聯網的發展&#xff0c;各種類型的客戶端層出不窮。如果不統一…

Mybatis-Plus最優化持久層開發

Mybatis-plus&#xff1a;最優化持久層開發 一&#xff1a;Mybatis-plus快速入門&#xff1a; 1.1&#xff1a;簡介&#xff1a; Mybatis-plus&#xff08;簡稱MP&#xff09;是一個Mybatis的增強工具&#xff0c;在mybatis的基礎上只做增強不做改變; 提高效率&#xff1b;自…

國漫推薦11

1.《元龍》 2.《惡魔法則》2023年9月29日 3.《三十六騎》 4.《山河劍心》 5.劍網3俠肝義膽沈劍心 《劍網3俠肝義膽沈劍心》 《劍網3俠肝義膽沈劍心 第二季》 《劍網3俠肝義膽沈劍心之長漂》&#xff08;番外&#xff09; 《劍網3俠肝義膽沈劍心 第三季》 6.《仙逆》東方玄幻…

Uniswap V2和Uniswap V3的區別

Uniswap V2和Uniswap V3是兩個不同版本的去中心化交易協議&#xff0c;由Uniswap團隊開發和維護。它們之間的主要區別包括以下幾點&#xff1a; 資金池模型不同: Uniswap V2: 使用恒定乘積市場模型&#xff0c;也就是 x * y k。這意味著每個資金池中的資產的乘積保持不變&…

Transformer的模型的擴展與應用領域的拓展 - Transformer教程

在如今的人工智能領域&#xff0c;Transformer模型已經成為了眾多研究和應用的焦點。從自然語言處理到計算機視覺&#xff0c;Transformer模型的擴展與應用領域的拓展帶來了無數的可能性。今天&#xff0c;我們就來聊聊Transformer模型的擴展以及它在不同領域的廣泛應用。 首先…

生產管理系統功能全拆解:哪些功能是企業真正需要的?

制造業的伙伴經常聽到“生產管理”&#xff0c;但很多人可能只是模糊地知道它與工廠、生產線有關。那么&#xff0c;到底什么是生產管理呢&#xff1f;它的重要性又體現在哪里呢&#xff1f;接下來&#xff0c;我就以輕松的方式&#xff0c;帶大家走進生產管理的世界&#xff0…

函數練習·二 基礎題

# 【以下功能都使用函數封裝】 # 提示: 涉及到要返回的題目,請使用return # 基礎題 # 1.封裝函數&#xff0c;計算從1到某個數以內所有奇數的和并返回 def fn1(n): return sum([i for i in range(1, n, 2)]) print(fn1(7)) # 2.封裝函數&#xff0c;判斷某個數是否是偶…

微信閃退怎么回事?實用技巧助你輕松應對

在使用微信的過程中&#xff0c;偶爾會遇到閃退的問題&#xff0c;這不僅影響我們的日常溝通&#xff0c;還可能導致重要信息的丟失。那么&#xff0c;微信閃退怎么回事呢&#xff1f;閃退的原因可能有很多&#xff0c;包括軟件問題、手機存儲不足、系統不兼容等。本文將詳細分…

筆記本電腦數據丟失如何恢復?

在計算機網絡日益普及的今天&#xff0c;計算機已波及到人們的生活、工作、學習及消費等廣泛領域&#xff0c;其服務和管理也涉及政府、工商、金融及用戶等諸多方面。筆記本電腦等電子產品被各行各業的人所喜愛和接受&#xff0c;早已成為人們出差的必備品&#xff0c;可以用來…

keepalived高可用集群

一、keepalived&#xff1a; 1.keepalive是lvs集群中的高可用架構&#xff0c;只是針對調度器的高可用&#xff0c;基于vrrp來實現調度器的主和備&#xff0c;也就是高可用的HA架構&#xff1b;設置一臺主調度器和一臺備調度器&#xff0c;在主調度器正常工作的時候&#xff0…

OS_同步與互斥

2024-07-04&#xff1a;操作系統同步與互斥學習筆記 第9節 同步與互斥 9.1 同步互斥的基本概念9.1.1 同步關系9.1.2 互斥關系9.1.3 臨界資源9.1.4 臨界區9.1.5 同步機制應遵循規則 9.2 軟件同步機制9.2.1 單標志法9.2.2 雙標志先檢查法9.2.3 雙標志后檢查法9.2.4 peterson算法 …