在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

寫一個Chrome瀏覽器插件

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-11-18 17:12 ? 次閱讀

一、什么是瀏覽器插件

瀏覽器插件是依附于瀏覽器,用來拓展網頁能力的程序。插件具有監聽瀏覽器事件、獲取和修改網頁元素、攔截網絡請求、添加快捷菜單等功能。使用瀏覽器插件可以實現很多有趣的功能。

二、瀏覽器插件有哪些種類

?以chromium為內核的瀏覽器插件如Chrome

??firefox瀏覽器插件

???safari瀏覽器插件

本文只介紹Chrome插件的原生開發流程。

三、插件目錄介紹

wKgaomc7BPCAMqkPAAEGcp5T_Z4361.png

a的文件名 文件介紹
manifest 核心配置文件,配置插件平臺版本、名稱、權限、Aicon、Api權限、host權限等。
popup.html 插件彈出頁面,原生html、css頁面。
popup.js 插件頁面的腳本文件。
popup.css 插件頁面的樣式文件
background.js 后臺文件,可以監聽瀏覽器事件,在瀏覽器后臺持續運行。
content.js 插入到頁面中的js腳本,可以監聽DOM事件,操作DOM元素。

四、開始寫一個插件

1. 配置manifest。

以下是一個基礎的manifest配置

wKgZomc7BPKAcelRAAX-1hHDX3o841.png

2. 寫一個插件的彈框界面popup.html

和寫html頁面一樣,在body里面寫元素,但是需要注意樣式文件popup.css和腳本文件popup.js需要外部引入。

wKgaomc7BPOAI_FBAATEQ3mhtP4646.png

3. 寫一個插件彈框界面的樣式文件popup.css。

4. 寫一個插件彈框界面的腳本文件popup.js。

腳本文件的主要作用在于響應插件彈窗的行為事件,并發送消息給內容腳本或者后臺腳本。

以下代碼是在popup.js中,監聽id為tag元素的點擊事件,獲取當前窗口active標簽頁,并給此標簽頁推送一個message。

wKgZomc7BPWAVQeAAAOTimez9I8340.png

4. 寫一個插件的內容腳本content.js

content.js會被插入到網頁環境中,用于監聽瀏覽器事件,讀取和操作DOM元素。

以下代碼是監聽頁面load事件,和接收來自第三步中send的message。


window.addEventListener("load", function () {
    // 監聽頁面load事件
})

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
 console.log("-----------");
 if (request.greeting === "tag") {
    console.log(request.greeting)
 }
});

5. 寫一個插件的后臺腳本background.js

后臺腳本會在瀏覽器窗口打開期間持續運行,監聽瀏覽器事件,網絡請求等。

以下代碼是瀏覽器屏蔽漏某些url請求的實現。

wKgaomc7BPaAZCIVAAMl2qMOuM4596.png

?

把上述的幾個文件創建完成之后就實現了一個簡單的插件,然后直接安裝到瀏覽器擴展即可。

?

五、解釋幾個消息發送和接收的Api

1. 獲取指定的瀏覽器標簽頁:

chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {})

2. 向指定標簽頁中的內容腳本發送一條消息,其中包含在發送回響應時運行的可選回調函數。在當前擴展程序的指定標簽頁中運行的每個內容腳本中都會觸發 runtime.onMessage 事件。

chrome.tabs.sendMessage(tabs[0].id, { greeting: "tag-remove" }, function (response) { console.log(response); });

3. 向擴展程序或其他擴展程序/應用中的事件監聽器發送一條消息。請注意,擴展程序無法使用此方法向內容腳本發送消息。如需向內容腳本發送消息,請使用

chrome.runtime.sendMessage( extensionId?: string, message: any, options?: object, callback?: function,)

4. onMessage,通過擴展程序進程(通過 runtime.sendMessage)或內容腳本(通過 tabs.sendMessage)發送消息時觸發。

chrome.runtime.onMessage.addListener( callback: function,)

想了解其他瀏覽器插件Api,請點擊跳轉?

六、接下來讓我們豐富插件的能力

1. 實時刪除頁面上的元素,我們經常會遇到一些煩人的廣告,刪掉他。廣告一般都是有固定的元素節點的,找到元素節點的class或者id,按以下處理。

以百度一下頁面舉例,以下代碼實時監聽網頁元素,發現class為s-p-top的元素后就會刪除改元素,這里我給被刪除元素的位置加了一個紅色邊框用來測試,實際使用中可以刪除添加紅框的代碼。

在content.js中添加以下代碼:

wKgZomc7BPiAJFc0AAjKHOlc644824.png

通過下面兩個圖對比可以看出使用插件后百度圖片被刪除了:

wKgaomc7BPmAH5kRAAPM-MQ_xaQ129.png

wKgaomc7BPyAQjDvAANCun_O_Y8035.png

2. 有人不習慣點開右上角插件再點擊功能按鈕,怎么辦呢,簡單,給瀏覽器右鍵菜單添加快捷鍵。

以下代碼為添加瀏覽器右鍵菜單的快捷鍵,并監聽菜單點擊事件,可在menu2中發起請求。

在background.js中:

wKgZomc7BP2AU0rrAAZnVLWXk9M005.png

效果如下:

wKgaomc7BP6Ac1rLAAMtNdh-FMg549.png

3. 還是攔截廣告,廣告可能出現在iframe中,但是呢我不想使用刪除DOM的方式,怎么辦呢,那就直接攔截網絡請求。

在background.js中:

wKgZomc7BQCAF9coAAN771BCkc0758.png

我們還以baidu.com為例,在MDN中測試,修改iframe src的值為baidu.com.

使用插件前結果如下:

wKgaoWc7BQGASLILAAKSO1TlPjQ097.png

使用插件后結果如下,可以發現iframe中沒有渲染baidu.com,并且在network中可以看到baidu.com被屏蔽了:

wKgZoWc7BQKAL2mnAAZ2aWIcEFQ761.png

4. 自定義一個自己的新開頁

兩步走

第一步:在manifest中定義newtab(就是一個html文件,這個文件會覆蓋原生的瀏覽器新開頁)

wKgaoWc7BQOAOHeCAAJadBaIF1Y663.png

第二步:創建newtab.html文件,可以在這個文件定義新開頁的樣式和js,且此樣式文件和js文件不用添加到content_scripts中

wKgZoWc7BQaAJO-6AARQo79jH7I822.png

效果如下

5. 標記頁面文本

在閱讀網頁文檔時,經常會想標記一些重點文本,可以直接用擴展來實現:

在background.js中:

wKgZoWc7BQyAPkjVAATkW8sWH38700.png

在content.js中:

wKgaoWc7BQ2ASvOXAAWfada-aU0454.png

效果:

wKgZoWc7BRCAVbfjAAWI-XRuibw899.gif

功能先豐富到這里,后面再繼續補充~

七、參考文檔

?chrome擴展參考文檔?

?chrome Api文檔?

?manifest權限配置文檔?

?審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 插件
    +關注

    關注

    0

    文章

    327

    瀏覽量

    22442
  • chrome瀏覽器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    6926
收藏 人收藏

    評論

    相關推薦

    Chrome 15正式版瀏覽器登場

    `Google今天發布了Chrome 15正式版,Windows、Linux、Mac三大平臺以及Chrome Frame瀏覽器內嵌框架用戶均可更新至最新的Chrome 15.0.874
    發表于 10-26 18:49

    樹莓派安裝chrome瀏覽器的問題

    如題,在安裝chrome瀏覽器的時候,出現如下圖問題。怎么破?
    發表于 09-11 11:07

    安裝了chrome瀏覽器,但還是很卡

    在論壇看到了發燒友大神說的關于瀏覽器的問題,我也就安裝了chrome瀏覽器,但是還是卡爆了。CPU爆棚的說。。。
    發表于 09-12 16:44

    Chrome瀏覽器將在ARM內核運行,Google Andr

    Chrome瀏覽器將在ARM內核運行,Google Android如虎添翼 Google將為其新發布的x86瀏覽器開發適用于ARM處理
    發表于 09-05 10:57 ?1385次閱讀

    視頻監控系統跨瀏覽器插件的研究與實現

    針對目前視頻監控系統的瀏覽器插件與非IE內核的瀏覽器不兼容的問題,本文采用基于FireBreath開發框架開發跨瀏覽器插件系統的方法,使
    發表于 12-18 16:03 ?5次下載

    四大瀏覽器續航對決,結果Chrome瀏覽器完勝

    近日,YouTube頻道UP主Linus Tech Tips進行了次四大瀏覽器續航對決,結果Chrome瀏覽器完勝。
    發表于 06-27 10:16 ?1400次閱讀

    Chrome成為瀏覽器市場的霸主 微軟Edge慘淡收場

    瀏覽器競爭的賽道上,微軟Edge算是徹底輸了。微軟為與Chrome競爭重新啟動Edge瀏覽器,但結果確實不如人意。如今Chrome已徹底統治瀏覽器
    發表于 02-03 10:23 ?868次閱讀

    谷歌瀏覽器 Chrome 發布 Linux 版本即將跟進

    把地址欄在上標簽在下的傳統,界面相當簡潔,而且界面很有 Google 的風格,與我們平時所用的 Google 產品的配色方案是類似的。?先要下載安裝程序,然后安裝程序會連接到網絡下載瀏覽器需要
    發表于 04-02 14:38 ?543次閱讀

    Chrome瀏覽器隱私設置重新設計后有什么不同

    Chromium小組重新設計了Chrome瀏覽器的“隱私設置”或Chrome 80中的“隱私和安全設置”卡。
    的頭像 發表于 11-16 09:37 ?2302次閱讀

    谷歌計劃通過Lacros將Chrome瀏覽器Chrome系統分離

    Chromebook 用戶可能直以來有煩惱:由于 Chrome 瀏覽器Chrome O
    的頭像 發表于 09-14 14:04 ?2138次閱讀

    五大Chrome神級插件,讓Chrome瀏覽器更加好用十倍

    Chrome谷歌瀏覽器是很多人心目中的NO.1,雖然它很好用,但難免還是有些功能顧及不到。這時候,就需要插件來幫忙。今天介紹5Chrome
    的頭像 發表于 09-17 14:05 ?3202次閱讀

    谷歌 Chrome 解決性能問題,增大瀏覽器緩存

    外媒 Bleeping Computer 報道,谷歌 Chrome 瀏覽器開發人員最近解決了安全問題,按網站對瀏覽器緩存進行分區,而不是
    的頭像 發表于 12-28 11:58 ?3189次閱讀

    Chrome瀏覽器插件v1.9.0發布 使用了最簡單的JavaScript代碼解析

    距 OSCHINA Chrome 瀏覽器插件 發布 上一個版本已經8月了,這段時間 OSCHINA 社區也做了多次改版,首屈
    的頭像 發表于 01-08 11:39 ?2030次閱讀
    <b class='flag-5'>Chrome</b><b class='flag-5'>瀏覽器</b><b class='flag-5'>插件</b>v1.9.0發布 使用了最簡單的JavaScript代碼解析

    暴力猴瀏覽器插件

    暴力猴瀏覽器插件
    發表于 05-29 11:20 ?6次下載

    瀏覽器原理解析Chrome常見插件的實現思路

    近期Chrome進程架構 從圖中可以看出,最新的 Chrome 瀏覽器包括:1 瀏覽器主進程、1
    的頭像 發表于 12-08 14:25 ?857次閱讀
    從<b class='flag-5'>瀏覽器</b>原理解析<b class='flag-5'>Chrome</b>常見<b class='flag-5'>插件</b>的實現思路
    主站蜘蛛池模板: 美女黄频| 永久手机看片福利盒子| 五月婷婷丁香色| 91天天干| 色天天综合网| 91在线视频观看| 性做久久久久久久免费看 | 一级中文字幕乱码免费| 欧美狠狠| 手机看片国产福利| 乱小说录目伦800| 欧美高清一区二区三| 天堂网在线资源| 乱色伦短篇小说| 六月丁香婷婷激情国产| 就要干就要操| 91三级视频| 色视频网站人成免费| 午夜亚洲国产| 日本一区二区三区欧美在线观看| 欧美整片第一页| 老湿司午夜爽爽影院榴莲视频| 国产一区中文字幕| 国产一级特黄aa大片爽爽| 高清午夜毛片| 四虎影院免费视频| 噜噜啪啪| 精品福利在线视频| 欧美视频一区二区三区在线观看| 天天尻逼| 新版天堂中文资源8在线| 男同小黄文| 欧美一区二区三区性| 人人爽天天爽夜夜爽曰| 狼色视频在线观免费观看| 日本黄色免费片| 久久草在线播放| 最新丁香六月| 成人sese| 免费aⅴ网站| 国模爱爱|