一、實現一個簡單的 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. 粘貼到聊天窗口

🏷? 源碼

需要的網友可以自提:【免費】瀏覽器插件:CopyPageURL資源-CSDN文庫

🎉 總結

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

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


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

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

相關文章

SLAM ORB-SLAM2(26)重定位過程

SLAM ORB-SLAM2(26)重定位過程 1. 前言2. 詞袋模型2.1. 加快搜索2.2. 在文本檢索的應用2.3. 引入視覺圖像分類3. 重定位總體過程3.1. 計算當前幀特征點的詞袋向量3.2. 根據用詞袋查找相似的候選關鍵幀3.3. 通過詞袋模型進行初步匹配3.4. 查詢較匹配的關鍵幀3.4.1. 通過PnP投影…

華為 2024 屆實習校園招聘-硬件通?/單板開發——第五套

華為 2024 屆實習校園招聘-硬件通?/單板開發——第五套 部分題目分享&#xff0c;完整版帶答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔細校正&#xff0c;僅供參考&#xff09;&#xff08;共十套&#xff0c;每套四十題選擇題&#xff09;獲取&#xff08;WX:…

java期末細節知識整理(一)

1.java程序的執行過程&#xff1a;先編譯后解釋。也就是我們在idea寫的文件叫做java源文件&#xff08;.java結尾的文件&#xff09;&#xff0c;經過編譯器會生成字節碼文件&#xff08;.class結尾的文件&#xff09;&#xff0c;再通過解釋器進行實現 2.棧用來存儲引用類型的…

易語言本地IP一鍵切換程序(附帶源碼)

易語言本地IP一鍵切換程序 效果圖部分源碼源碼領取下期更新預報 效果圖 部分源碼 .判斷開始 (單選框1.選中 &#xff1d; 真)標簽5.標題 &#xff1d; #換行符 &#xff0b; “正在切換IP.”.如果真 (運行 (“netsh interface ip set address ” &#xff0b; #引號 &#xff…

PHP火狼大灌籃游戲源碼微信+手機wap源碼帶控制

使用此接口可以實現支付寶、QQ錢包、微信支付與財付通的即時到賬&#xff0c;免簽約&#xff0c;無需企業認證。PHP易支付源碼&#xff0c;免簽約不需要企業的支付平臺源碼&#xff0c;彩虹第三四方在線支付系統源碼,易支付token合作者商戶申請源碼&#xff0c;app和網頁都可以…

ubuntu--Linux運行時格式

Linux運行時格式 \r 錯誤 用vim打開那個執行錯誤的 sh腳本文件 進入最后一行模式下 :set ff顯示 fileformatdos 解決方法 : :set ffunix查看是否更改 : :set ff結果 : 保存退出即可 :x運行, 沒有出錯 * Author: cpu_code * Date: 2020-07-29 19:07:52 * LastEditTime: 2020…

day25回溯算法part02| 216.組合總和III 17.電話號碼的字母組合

216.組合總和III 題目鏈接/文章講解 | 視頻講解 class Solution { public:vector<vector<int>> result;vector<int> path;int sum;void backtracking(int n, int k, int startindex) {// int sum accumulate(path.begin(), path.end(), 0);if (sum n &am…

HTTP --tcp

TCP TCP連接 tcp/ip是全球計算機以及網絡設備都在使用的一種常見的分組交換網絡分層協議集&#xff0c;客戶端可以打開一條tcp/ip連接&#xff0c;連接到可能運行在世界各地的服務器應用程序&#xff0c;一旦連接建立起來了&#xff0c;在客戶端和服務器的計算機之間交換的報…

@autowired 注入進來對象為null的幾種場景及解決辦法

一、原因 Autowired 注解用于自動注入 Spring 容器中管理的依賴對象。如果注入的對象為 null&#xff0c;可能是以下原因之一&#xff1a; 被注入的對象沒有被 Spring 容器管理&#xff0c;即沒有被 Spring 掃描到或者沒有配置相應的 。注入的對象在 Spring 容器中有多個實例…

el-date-picker的使用,及解決切換type時面板樣式錯亂問題

這里選擇器的類型可以選擇日月年和時間范圍&#xff0c;根據類型不同&#xff0c;el-date-picker的面板也展示不同&#xff0c;但是會出現el-date-picker錯位&#xff0c;或者面板位置和層級等問題。 源代碼&#xff1a; <el-selectv-model"dateType"placeholder&…

BOOST_SREATCH

BOOST Boost是一個由C社區開發的開源庫&#xff0c;為C語言標準庫提供擴展。這個庫由C標準委員會庫工作組成員發起&#xff0c;旨在提供大量功能和工具&#xff0c;幫助C開發者更高效地編寫代碼。Boost庫強調跨平臺性和對標準C的遵循&#xff0c;因此與編寫平臺無關&#xff0…

PyCharm設置前端:全面解析與個性化配置指南

PyCharm設置前端&#xff1a;全面解析與個性化配置指南 PyCharm&#xff0c;作為一款強大的Python集成開發環境&#xff08;IDE&#xff09;&#xff0c;在編程界享有極高的聲譽。然而&#xff0c;對于許多前端開發者來說&#xff0c;如何在PyCharm中設置和優化前端工作環境可…

如何防止商業秘密泄露?商業秘密保護措施有哪些?

商業秘密是企業核心競爭力的關鍵所在&#xff0c;其保密性直接關系到企業的生存和發展。 因此&#xff0c;防止商業秘密泄露&#xff0c;確保商業秘密的安全至關重要。 本文將探討如何有效防止商業秘密泄露&#xff0c;并重點介紹域智盾軟件作為解決方案&#xff0c;在商業秘密…

Jvm(一)之棧、堆、方法區

前言-與正文無關 生活遠不止眼前的苦勞與奔波&#xff0c;它還充滿了無數值得我們去體驗和珍惜的美好事物。在這個快節奏的世界中&#xff0c;我們往往容易陷入工作的漩渦&#xff0c;忘記了停下腳步&#xff0c;感受周圍的世界。讓我們一起提醒自己&#xff0c;要適時放慢腳步…

【機器學習系列】掌握隨機森林:從基礎原理到參數優化的全面指南

目錄 目錄 一、隨機森林簡介 (一)隨機森林模型的基本原理如下&#xff1a; (二)隨機森林模型的優點包括&#xff1a; (三)森林中的樹的生成規則如下&#xff1a; (四)在隨機森林中&#xff0c;每棵樹都使用不同的訓練集進行訓練&#xff0c;原因如下 隨機森林的分類性能&…

說說影響網絡的因素

1. 物理層面 帶寬 帶寬是指網絡傳輸數據的能力&#xff0c;帶寬越大&#xff0c;網絡能夠傳輸的數據量就越大。 信號強度和干擾 信號強度和干擾對無線網絡尤其重要。信號強度低或干擾嚴重會導致數據丟失、傳輸錯誤和重傳次數增加&#xff0c;從而降低網絡性能。 器件質量 路由…

點賦科技:建設智能飲品高地,打造數字化產業先鋒

在當今數字化時代的浪潮中&#xff0c;點賦科技以其敏銳的洞察力和卓越的創新能力&#xff0c;致力于建設智能飲品高地&#xff0c;打造數字化產業先鋒。 點賦深知智能飲品機對于推動社會進步和滿足人們日益增長的需求的重要性。因此&#xff0c;他們投入大量資源和精力&#x…

2020 6.s081——Lab1:Xv6 and Unix utilities夢開始的地方

一任宮長驍瘦 臺高冰淚難流 錦書送罷驀回首 無余歲可偷 ——知否知否 完整代碼見&#xff1a;6.s081/kernel at util SnowLegend-star/6.s081 (github.com) Lecture 01知識點總結 首先透徹理解Lecture01的知識很是重要 ①pidwait((int *) 0); “wait(int *status)”函數用于…

Python變量用法——單下劃線變量名_

單下劃線變量名_ 在常用的諸多變量中&#xff0c;單下劃線_是比較特殊的一個。它常作為一個無意義的占位符出現在賦值語句中。_這個名字本身沒有什么特別之處&#xff0c;這算是大家約定俗成的一種用法。 舉例&#xff0c;假如你想在解包賦值時忽略某些變量&#xff0c;就可以…

Day54 判斷子序列 + 不同的子序列

392 判斷子序列 題目鏈接&#xff1a;392. 判斷子序列 - 力扣&#xff08;LeetCode&#xff09; 給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些&#xff08;也可以不刪除&#xff09;字符而不改變剩余字符相對位置形成…