實現一個簡單的 Google Chrome 擴展程序

目錄

🧭 效果展示?

# 圖示效果

a. 拓展程序列表圖示效果:

b. 當前選項卡頁面右鍵效果:

c. 拓展程序消息提示效果:

📇 項目目錄結構

# 說明

# 結構

# 文件一覽

? 核心代碼

#?manifest.json

#?background.js

# popup.html

💻 具體實施

# 安裝擴展程序

🧪 調試

🎨 實踐

🎉 總結


?

🧭 效果展示?

# 圖示效果

a. 拓展程序列表圖示效果:

?

b. 當前選項卡頁面右鍵效果:

c. 拓展程序消息提示效果:

📇 項目目錄結構

# 說明

新建一個項目?chrome-plugin (文件夾),

包含 入口文件,配置文件,交互頁面,靜態資源

說明名稱
入口文件background.js
配置文件manifest.json
交互頁面popup.html
靜態資源icon*.png

?

# 結構

# 文件一覽

? 核心代碼

#?manifest.json

創建 manifest.json 文件,內容:

# manifest.json
{"manifest_version": 3,"name": "Copy Page URL on Right Click","version": "1.0","description": "A Chrome extension to copy the current page URL on right-click.","permissions": ["contextMenus","clipboardWrite","activeTab","tabs","scripting"],"background": {"service_worker": "background.js"},"icons": {"16": "icon16.png","48": "icon48.png","128": "icon128.png"},"action": {"default_popup": "popup.html","default_icon": {"16": "icon16.png","48": "icon48.png","128": "icon128.png"}}
}

?

#?background.js

創建入口文件 background.js ,內容:

# background.js
// 創建右鍵菜單項
chrome.contextMenus.create({id: "copyPageUrl",title: "Copy Page URL",contexts: ["page"]
});// 監聽右鍵點擊事件
chrome.contextMenus.onClicked.addListener((info, tab) => {if (info.menuItemId === "copyPageUrl") {// 獲取當前頁面的 URL 地址var currentPageUrl = tab.url;// console.log("Current page URL: " + currentPageUrl);// 將 URL 地址寫入剪貼板chrome.scripting.executeScript({target: { tabId: tab.id },function: function (url) {// 創建一個臨時 textarea 元素,將 URL 寫入其中,并選中文本var textarea = document.createElement('textarea');textarea.value = url;document.body.appendChild(textarea);textarea.select();document.execCommand('copy');document.body.removeChild(textarea);},args: [currentPageUrl]});console.log("URL copied to clipboard: " + currentPageUrl);// 在彈出頁面中顯示提示信息chrome.tabs.create({ url: "popup.html" });}
});

?

# popup.html

創建一個右鍵操作之后的交互頁面

# popup.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Copy Status</title><style>body {font-family: Arial, sans-serif;text-align: center;padding: 20px;}</style>
</head><body><div>復制成功</div>
</body></html>

?

💻 具體實施

# 安裝擴展程序

a. 在 chrome 瀏覽器地址欄輸入:

chrome://extensions/

?

b. 進入擴展程序界面

c .點擊右上角開關按鈕,開啟開發者模式

打開之后,會出現如下圖的三個按鈕:加載已解壓的擴展程序、打包擴展程序、更新。

?

d. 點擊 ‘加載已解壓的擴展程序’,選擇我們剛剛創建的項目文件夾:

e. 加載成功

🧪 調試

i. 如果有修改可以點擊擴展程序卡片中的刷新按鈕

ii. tab欄的‘更新’按鈕

ii. 控制臺調試及打印日志輸出 “檢查視圖Service Worker”

🎨 實踐

a. 打開百度?https://www.baidu.com/?, 對空白處右鍵

b. 點擊“Copy Page URL”,進入交互頁面

c. 粘貼到聊天窗口

?

?

🎉 總結

也許有人會說這個插件很雞肋。確實,這里只是演示教你如何入門做一個擴展應用程序,并沒有更深入的探究。如果自己有興趣可以專研哈~

最后附上一個工具鏈接:iLoveIMG | 圖像文件在線編輯工具


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

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

相關文章

星融元獲2024網絡開源優秀創新成果獎!

5月25日&#xff0c;星融元受邀參加2024年第四屆網絡開源技術生態大會&#xff0c;分享主題為“開放的網絡 開放的AI生態”主題演講&#xff0c;深受現場用戶的認可&#xff1b;《Easy RoCE&#xff1a;基于SONiC、Klish和Prometheus的極簡無損網絡解決方案》獲得2024網絡開源優…

SpheroGPT: 聲控自然語言編程 AI 玩具 Demo 具身智能 圖文解說 完全開源機器人

背景介紹 因為生病請了長假. 一周前狀態開始恢復, 于是嘗試用 LLM (ChatGPT3.5) + Sphero 開發一個可以聲控自然語言編程的 AI 玩具, 作為學習 ChatGPT 應用開發的方法. 差不多十天時間把開發目標基本都實現了, 這里和大家分享一下心得體會. Demo 示例視頻 先把錄制的幾個 d…

云原生Kubernetes: 云主機部署K8S 1.30版本 單Master架構

目錄 一、實驗 1.環境 2.Termius連接云主機 3.網絡連通性與安全機制 4.云主機部署docker 5.云主機配置linux內核路由轉發與網橋過濾 6.云主機部署cri-dockerd 7.云主機部署kubelet,kubeadm,kubectl 8.kubernetes集群初始化 9.容器網絡&#xff08;CNI&#xff09;部署…

Docker學習筆記 - 創建自己的image

目錄 基本概念常用命令使用docker compose啟動腳本創建自己的image 使用Docker是現在最為流行的軟件發布方式&#xff0c; 本系列將闡述Docker的基本概念&#xff0c;常用命令&#xff0c;啟動腳本和如何生產自己的docker image。 在我們發布軟件時&#xff0c;往往需要把我…

解析邊緣計算網關的優勢-天拓四方

隨著信息化、智能化浪潮的持續推進&#xff0c;計算技術正以前所未有的速度發展&#xff0c;而邊緣計算網關作為其中的重要一環&#xff0c;以其獨特的優勢正在逐步改變我們的生活方式和工作模式。本文將詳細解析邊緣計算網關的優勢。 首先&#xff0c;邊緣計算網關具有顯著的…

uniapp頁面vue3下拉觸底發送獲取新數據請求實現分頁功能

頁面下拉觸底獲取新數據實現分頁功能實現方式有兩種&#xff0c;根據自己的業務需求來定&#xff0c;不同的方案適用場景不一樣&#xff0c;有的是一整個頁面下拉獲取新數據&#xff0c;有的是部分盒子內容滾動到底部時候實現獲取新數據&#xff0c;下面討論一下兩種方式的區別…

C語言中 一種特殊的 數組或結構體 初始化方法

在C語言中&#xff0c;初始化器&#xff08;Initializer&#xff09;是一種特殊的語法&#xff0c;用于在變量定義時設置初始值。對于不同類型的變量&#xff08;如基本類型、數組、結構體和聯合體&#xff09;&#xff0c;初始化器的用法有所不同。 1. 基本類型 對于基本數據…

JSON-RPC跨域通信:Python服務器端解決方案與Js客戶端 Mozilla擴展程序

問題背景 構建一個 Mozilla 擴展程序&#xff0c;與遠程服務器上的 Python 應用程序進行通信以發送和接收數據。Python 應用程序可以通過 Python 控制臺使用 xml-rpc 調用。嘗試設計一個 JSON-RPC 來聯系同一個應用程序。開發 Python 服務器端&#xff0c;可以通過 python 控制…

CSP十滴水

題目給的容器很多&#xff0c;1e9&#xff0c;我們遍歷肯定會超時。 但是他給的信息是&#xff0c;m只有3e5&#xff0c;且每次滴水都會滴在有水的地方&#xff0c;水滿了之后也只會擴散到左右有水的地方。也就是說&#xff0c;只有有水的地方才是我們會用到的地方。 所以&am…

【高數】重點內容,公式+推導+例題,大學考試必看

目錄 1 隱函數求導1.1 公式1.2 說明1.3 例題 2 無條件極值2.1 運用2.2 求解2.3 例題 3 條件極值3.1 運用3.2 求解3.3 例題 4 二重積分4.1 直角坐標下4.2 極坐標下4.3 例題 5 曲線積分5.1 第一型曲線積分5.2 第二型曲線積分5.3 例題 6 格林公式6.1 公式6.2 說明6.3 例題 &#x…

Postman進階功能-集合分支管理與編寫接口文檔

大家好&#xff0c;在接口測試的領域中&#xff0c;我們不斷追求更高效、更便捷、更強大的方法與工具。而 Postman 作為一款備受青睞的接口測試工具&#xff0c;其進階功能更是為我們打開了新的天地。在這其中&#xff0c;集合分支管理與編寫接口文檔的功能顯得尤為重要。 當面…

作業-day-240527

Cday1思維導圖 定義自己的命名空間my_sapce&#xff0c;在my_sapce中定義string類型的變量s1&#xff0c;再定義一個函數完成對字符串的逆置 #include <iostream>using namespace std;namespace my_space {string s1"abc123";string recover(string s){int i0…

go-zero 實戰(3)

引入 Redis 在之前的 user 微服務中引入 redis。 1. 修改 user/internal/config/config.go package configimport ("github.com/zeromicro/go-zero/core/stores/cache""github.com/zeromicro/go-zero/zrpc" )type Config struct {zrpc.RpcServerConfMys…

拖線無人機技術

拖線無人機技術是一種獨特且高效的無人機應用技術&#xff0c;其設計理念源于風箏。這種無人機不僅能夠在空中穩定飛行&#xff0c;而且具備極強的抗干擾能力&#xff0c;使其在各種復雜環境下都能保持通信暢通和任務執行的高效。 拖線無人機技術的核心在于其拖線系統。與傳統…

Overall Accuracy(OA)、Average Accuracy(AAcc)計算公式

以二分類為例&#xff1a;1.總體精度(Overall Accuracy, OA)&#xff1a;樣本中正確分類的總數除以樣本總數。 OA(TPTN)/(TPFNFPTN)2.平均精度(Average Accuracy, AA)&#xff1a;每一類別中預測正確的數目除以該類總數&#xff0c;記為該類的精度&#xff0c;最后求每類精度的…

2022全國大學生數學建模競賽ABC題(論文+代碼)

文章目錄 &#xff08;1&#xff09;2022A波浪能最大輸出功率&#xff08;2&#xff09;2022B無人機定位&#xff08;3&#xff09;2022C古代玻璃制品成分分析&#xff08;4&#xff09;論文和代碼鏈接 &#xff08;1&#xff09;2022A波浪能最大輸出功率 &#xff08;2&#x…

檢測 CSS 中的 JavaScript 支持

最近&#xff0c;我驚喜地發現了一個CSS媒體特性——scripting&#xff0c;它能夠在所有現代瀏覽器中使用。這意味著&#xff0c;我們可以根據用戶瀏覽器是否支持JavaScript來提供不同的CSS規則&#xff0c;從而減少未樣式化內容的閃爍或不受歡迎的布局偏移。 使用方法 使用這…

su模型轉3d模型不夠平滑怎么辦?---模大獅

當將SU模型轉換為3D模型時&#xff0c;可能會遇到模型不夠平滑的情況&#xff0c;這會影響到最終的渲染效果和視覺體驗。本文將探討在此情況下應該如何解決&#xff0c;幫助讀者更好地處理這一常見的問題。 一、檢查SU模型細分程度 首先要檢查的是原始的SU模型的細分程度。在S…

go語言之map

1.map認識 哈希表是一種巧妙并且實用的數據結構。它是一個無序的key/value對的集合&#xff0c;其中所有的key都是不同的&#xff0c;然后通過給定的key可以在常數時間復雜度內檢索、更新或者刪除對用的value。 在Go語言中&#xff0c;一個map就是一個哈希表的引用&…

XSKY CTO 在英特爾存儲技術峰會的演講:LLM 存儲,架構至關重要

5 月 17 日&#xff0c;英特爾存儲技術峰會在北京順利舉辦。作為英特爾長期的合作伙伴&#xff0c;星辰天合受邀參加了此次峰會。星辰天合 CTO 王豪邁作為特邀嘉賓之一&#xff0c;作了主題為《LLM 存儲&#xff1a;架構至關重要》的演講&#xff0c;分享了大語言模型&#xff…