google瀏覽器插件開發

来源:https://www.cnblogs.com/lori/p/18164149
-Advertisement-
Play Games

項目結構 在開發Chrome插件時,以下幾個文件的作用如下: manifest.json:這是Chrome插件的清單文件,用於配置插件的基本信息、許可權、頁面跳轉等。其中包括插件的名稱、版本號、圖標、後臺腳本、瀏覽器動作等信息。 background.js:這是Chrome插件的後臺腳本文件,用於處理 ...


項目結構

在開發Chrome插件時,以下幾個文件的作用如下:

  1. manifest.json:這是Chrome插件的清單文件,用於配置插件的基本信息、許可權、頁面跳轉等。其中包括插件的名稱、版本號、圖標、後臺腳本、瀏覽器動作等信息。

  2. background.js:這是Chrome插件的後臺腳本文件,用於處理插件的後臺邏輯。可以監聽事件、與瀏覽器進行交互、執行一些後臺任務等。在manifest.json中指定了background腳本後,它會在插件載入時自動運行。

  3. popup.html:這是Chrome插件點擊後彈出的界面的HTML文件。可以定義插件彈出頁面的結構、樣式和交互邏輯。

  4. popup.js:這是Chrome插件彈出頁面的JavaScript文件,用於定義插件彈出頁面的交互邏輯。在popup.html中引入popup.js,可以實現點擊插件按鈕後彈出頁面的功能。

以上文件各自承擔不同的角色,在Chrome插件開發中起著重要的作用。合理地編寫和組織這些文件可以幫助你實現所需的功能並提升用戶體驗。希望這些解釋對你有所幫助。

manifest.json(v2版本)

{
  "manifest_version": 2,
  "name": "lind-kc",
  "version": "1.0.1",
  "description": "lind-kc-pid",
  "author": "lind",
  "permissions": [
    "tabs",
    "<all_urls>",
    "webRequest",
    "webRequestBlocking",
    "storage",
    "cookies",
    "system.cpu",
    "system.memory",
    "system.storage",
    "system.display"
  ],
  "browser_action": {
    "default_icon": "icon-16.png",
    "default_title": "點擊登錄系統"
  },
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": true
  },
  "web_accessible_resources": [
    "popup.html",
    "popup.js"
  ]
}

popup.html和popup.js

如果沒有自定義表單,點圖標就執行插件,這塊就不需要了。

background.js

這是核心代碼,控制瀏覽器的行為,比如攔截請求,修改請求頭,修改響應頭,修改響應內容等等。

// 監聽消息
chrome.browserAction.onClicked.addListener(function (tab) {
    // 在這裡處理收到的登錄消息
    var machine = [];
    chrome.system.cpu.getInfo(function (info) {
        machine.push(info.archName);
        machine.push(info.numOfProcessors);
        machine.push(info.modelName);
        chrome.system.memory.getInfo(function (memory) {
            machine.push(memory.capacity);
            chrome.system.display.getInfo(function (dis) {
                var diss = "";
                dis.forEach(function (d) {
                    machine.push(d.id);
                });
                chrome.system.storage.getInfo(function (storageInfo) {
                    var storages = "";
                    storageInfo.forEach(function (storage) {
                        machine.push(storage.id);
                    });
                    chrome.cookies.set({
                        url: "https://cas.xxx.com/auth/",
                        name: "kc-token",
                        value: machine.join("_"),
                        domain: ".xxx.com",
                        path: "/",
                        secure: true,
                        httpOnly: true,
                        expirationDate: Math.floor((new Date().getTime() / 1000) + 3600) // 設置cookie過期時間
                    });

                });
            });

        });
    });
});

獲取客戶硬體信息

  1. chrome.system.memory:用於獲取系統記憶體信息,如總記憶體量、可用記憶體量等。

  2. chrome.system.storage:用於獲取存儲設備(如硬碟、U盤)的信息,包括容量、可用空間等。

  3. chrome.system.display:用於獲取顯示器信息,如解析度、縮放比例等。

  4. chrome.system.network:用於獲取網路信息,如網路連接狀態、IP地址等。

  5. chrome.system.power:用於獲取電源信息,如電池狀態、剩餘電量等。

這些API可以幫助開發者在Chrome插件中獲取硬體相關的信息,以便實現更豐富的功能和用戶體驗。在使用這些API時,同樣需要在manifest.json文件中聲明相應的許可權,例如:

{
  "permissions": [
    "system.memory",
    "system.storage",
    "system.display",
    "system.network",
    "system.power"
  ]
}

通過合理地利用這些硬體信息介面,你可以為你的Chrome插件添加更多實用的功能,提升用戶體驗。如果有特定的硬體信息需求,建議查閱官方文檔以獲取更詳細的信息和使用方法。

當使用Chrome Extension API中的chrome.system.memorychrome.system.storage模塊來獲取客戶端硬碟和記憶體的詳細信息時,可以參考以下屬性和方法:

chrome.system.memory

  • chrome.system.memory.getInfo():獲取系統記憶體信息。
    • capacity:系統總記憶體容量(以位元組為單位)。
    • availableCapacity:系統可用記憶體容量(以位元組為單位)。

示例代碼:

chrome.system.memory.getInfo(function(info) {
    console.log('總記憶體容量:', info.capacity);
    console.log('可用記憶體容量:', info.availableCapacity);
});

chrome.system.storage

  • chrome.system.storage.getInfo():獲取存儲設備信息。
    • id:存儲設備的唯一標識符。
    • name:存儲設備的名稱。
    • type:存儲設備類型(如固態硬碟、機械硬碟等)。
    • capacity:存儲設備總容量(以位元組為單位)。
    • availableCapacity:存儲設備可用容量(以位元組為單位)。

示例代碼:

chrome.system.storage.getInfo(function(storageInfo) {
    storageInfo.forEach(function(info) {
        console.log('存儲設備ID:', info.id);
        console.log('存儲設備名稱:', info.name);
        console.log('存儲設備類型:', info.type);
        console.log('存儲設備總容量:', info.capacity);
        console.log('存儲設備可用容量:', info.availableCapacity);
    });
});

通過以上屬性和方法,你可以在Chrome插件中獲取到客戶端硬碟和記憶體的詳細信息,並根據需要進行相應的處理和展示。如果需要更多關於這些API的信息,建議查閱官方文檔以獲取更全面的指導。

參考:

作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980

支付寶掃一掃,為大叔打賞!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 要理解相關子查詢和非相關子查詢,我們得首先理解什麼是子查詢,子查詢是指在一個查詢語句中嵌套的另一個查詢語句。 ...
  • 前言 OLAP概念誕生於1993年,工具則出現在更早以前,有史可查的第一款OLAP工具是1975年問世的Express,後來走進千家萬戶的Excel也可歸為此類,所以雖然很多數據人可能沒聽過OLAP,但完全沒打過交道的應該很少。 這個概念主要是在大數據圈裡流傳,而在大數據領域里,目前主流的OLAP開 ...
  • fragment切換動效,基本都是 viewpager+Transformer,但是總有它實現不了的動效,比如從0到3直接過渡,並且過渡需要加上兩者的位移效果 慢動作看到,如果是viewpager,從0到3過程是無法直達的,會有0,1,2,3的過渡效果,並且動畫時機是不可控的 當然,有個自定義方式可 ...
  • 效果圖,簡單的入場退場動效,一般情況是不同view之間去添加動畫,某些條件下顯然並不符合需求,需要在單個ImageView下進行的 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintL ...
  • 隱私清單: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><pli ...
  • 一、什麼是雙向綁定 我們先從單向綁定切入單向綁定非常簡單,就是把Model綁定到View,當我們用JavaScript代碼更新Model時,View就會自動更新雙向綁定就很容易聯想到了,在單向綁定的基礎上,用戶更新了View,Model的數據也自動被更新了,這種情況就是雙向綁定舉個慄子 當用戶填寫表 ...
  • 原創研發uniapp+vue3+pinia2跨三端仿微信app聊天模板Uniapp-Wechat。 uni-vue3-wchat基於uni-app+vue3+pinia2+uni-ui+uv-ui等技術跨端仿製微信App界面聊天項目,支持編譯到H5+小程式端+App端。實現編輯框多行消息/emoj混 ...
  • 1.現象 當在vue中列印對象的時候會發現有一些屬性或者全部屬性都是顯示的...,點擊展開後才能看到真正的值是什麼. 2.原因 因為在vue中對象都是用了代理重寫了get,由於get重寫也就導致了瀏覽器不能直接獲取到具體的值,因此才會在列印的時候為...,手動點擊展開才顯示具體的值 3.想看具體的值 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...