chrome 插件開發(fā) 環(huán)境準備 [1]

官方
https://developer.chrome.com/extensions/devguide
https://developer.chrome.com/extensions/api_index

谷歌瀏覽器插件是一種小型的用于定制瀏覽器體驗的程序献幔。通過插件幢妄,可以自定義瀏覽器的一些行為來適應(yīng)個人的需要,只要你會HTML熊镣,JavaScript,CSS就可以動手開發(fā)瀏覽器插件了。

開發(fā)谷歌瀏覽器插件字旭,就相當于在谷歌瀏覽器的基礎(chǔ)之上進行活動然想,站在巨人的肩膀上莺奔,操作很多東西都方便了一些。有了插件变泄,我們可以定制js爬蟲令哟、屏蔽網(wǎng)頁廣告,網(wǎng)頁實時查詞杖刷,修改http請求頭励饵,等等,能做的東西很多滑燃。

基礎(chǔ)概念與入門案例

廢話少說役听,先看一下插件版的hello world,了解插件的大體結(jié)構(gòu)表窘,麻雀雖小典予,五臟俱全。

  1. 創(chuàng)建manifest.json乐严。任何插件都必須要有這個文件瘤袖,用來描述插件的元數(shù)據(jù),插件的配置信息昂验。
 {
    "name": "Hello Extensions",
    "description" : "Hello world Extension",
    "version": "1.0",
    "manifest_version": 2,
  }

定義當前插件的名字捂敌,描述版本號等信息。
注意: version在打包完插件的時候既琴,根據(jù)version判斷插件是否需要更新占婉。

  1. 給插件加一個瀏覽器右上角的圖標。

    image
 {
     "name": "Hello Extensions",
    "description" : "Hello world Extension",
    "version": "1.0",
    "manifest_version": 2甫恩,
#新增內(nèi)容如下
    "browser_action": {
      "default_popup": "hello.html",
      "default_icon": "hello_extensions.png"
    }
  }

hello.html

<html>
    <body>
      <h1>Hello Extensions</h1>
    </body>
</html>

image.png
  1. 新增快捷鍵逆济,通過鍵盤快速打開,修改manifest.json
 {
     "name": "Hello Extensions",
    "description" : "Hello world Extension",
    "version": "1.0",
    "manifest_version": 2,
    "browser_action": {
      "default_popup": "hello.html",
      "default_icon": "hello_extensions.png"
    },

#新增內(nèi)容如下
   "commands": {
      "_execute_browser_action": {
        "suggested_key": {
          "default": "Ctrl+Shift+F",
          "mac": "MacCtrl+Shift+F"
        },
        "description": "Opens hello.html"
      }
    }
  }

4 permissions 此插件用到的瀏覽器的權(quán)限。常用的權(quán)限如下奖慌。在Chrome 插件API概覽頁面點進去抛虫,會看到此api需要的權(quán)限。

image
"permissions": [
    "tabs",
    "storage",
    "http://*/*",
    "https://*/*"
  ],

5简僧、contentScripts建椰,運行在瀏覽器網(wǎng)頁的上下文頁面,使用標準的DOM模型涎劈,contentScripts標簽在控制臺可以看到广凸。

image
 "content_scripts": [
    {
      "matches": [
        "http://*/*",
        "https://*/*"
      ],
      "js": [
        "scripts/contentscript.js"
      ],
      "run_at": "document_end",
      "all_frames": false
    }
  ],

6、 background后臺頁面蛛枚,在瀏覽器前臺看不到的頁面谅海,可以以后臺進程的方式進行運行,也可以以事件的方式運行蹦浦。需要打開擴展程序的開發(fā)者模式才能看到扭吁。

image
"background": {
    "scripts": [
      "scripts/background.js"
    ]
  },

更詳細的manifest.json文件配置信息請參考官方manifest.json文件格式

7、 常用到的開發(fā)方式說明

image.png

一般我們會在瀏覽器的前臺頁面盲镶,也就是直接打開控制臺就可以看到的擴展程序侥袜,通過contentScript指定加載的程序。在這里監(jiān)聽當前瀏覽器當前打開的頁面溉贿,然后做一些與用戶交互的東西枫吧。

在前臺的交互,以消息的形式傳遞到background指定的腳本宇色。

contentScript執(zhí)行的程序一般可以跨域九杂,瀏覽器的安全限制,而background指定的腳本可以跨域運行宣蠕,獲取所有瀏覽器cookie信息等等例隆。

交互案例,詳細的操作看一下項目的腳手架中。

chrome.runtime.sendMessage(string extensionId, any message, object options, function responseCallback)
chrome.runtime.onMessage.addListener(function callback)

一篇有關(guān)前后臺通信的文章

  1. 在前后臺可以通信之后,很多功能可以依賴第三方的庫嘉汰,當前我們參考的腳手架,可以直接使用npm安裝第三方庫唱逢。可以多花點心思研究插件的具體結(jié)構(gòu)屋休。

使用腳手架工具

https://gitee.com/XinGithub/generator-chrome-extension

npm install --global yo gulp-cli bower

# Install the generator:
npm install -g generator-chrome-extension

# Make a new directory, and `cd` get into it:
mkdir my-new-chrome-extension && cd $_

# Generate a new project
yo chrome-extension  
//不要使用sass
//Cannot download "https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-64_binding.node":


# Transform updated source written by ES2015 (default option)
gulp babel

# or Using watch to update source continuously
gulp watch  //修改文件后會自動更新到插件

# Make a production version extension
gulp build
//cannot find module 'eslint-scope'
npm i eslint-scope --save

. 安裝瀏覽器擴展

進入擴展程序


image

加載項目目錄下的app的文件夾坞古。

image

開發(fā)時gulp watch 即可同步


項目結(jié)構(gòu)

修改app下的文件,導(dǎo)入插件也是該文件夾博投,script腳本修改script.bable下的,babel命令會copy到scripts下


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盯蝴,一起剝皮案震驚了整個濱河市毅哗,隨后出現(xiàn)的幾起案子听怕,更是在濱河造成了極大的恐慌,老刑警劉巖虑绵,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尿瞭,死亡現(xiàn)場離奇詭異,居然都是意外死亡翅睛,警方通過查閱死者的電腦和手機声搁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捕发,“玉大人疏旨,你說我怎么就攤上這事≡幔” “怎么了檐涝?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長法挨。 經(jīng)常有香客問我谁榜,道長,這世上最難降的妖魔是什么凡纳? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任窃植,我火速辦了婚禮,結(jié)果婚禮上荐糜,老公的妹妹穿的比我還像新娘巷怜。我一直安慰自己,他們只是感情好狞尔,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布丛版。 她就那樣靜靜地躺著,像睡著了一般偏序。 火紅的嫁衣襯著肌膚如雪页畦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天研儒,我揣著相機與錄音豫缨,去河邊找鬼。 笑死端朵,一個胖子當著我的面吹牛好芭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冲呢,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼舍败,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邻薯,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裙戏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厕诡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體累榜,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年灵嫌,在試婚紗的時候發(fā)現(xiàn)自己被綠了壹罚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡寿羞,死狀恐怖猖凛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稠曼,我是刑警寧澤形病,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站霞幅,受9級特大地震影響漠吻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜司恳,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一途乃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扔傅,春花似錦耍共、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荠耽,卻和暖如春钩骇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铝量。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工倘屹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慢叨。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓纽匙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拍谐。 傳聞我的和親對象是個殘疾皇子烛缔,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • chrome擴展開發(fā)入門教程 最近在開發(fā)chrome插件馏段,看到一篇非常適合入門的教程,特記錄一下 注:轉(zhuǎn)載 本文首...
    謝大見閱讀 6,433評論 1 25
  • Chrome擴展開發(fā) 標簽(空格分隔): Chrome擴展 1践瓷、寫在前面 Chrome插件是一個用Web技術(shù)開發(fā)...
    記憶的時間差閱讀 6,033評論 0 15
  • 1. 簡介 Chrome插件是一個用Web技術(shù)開發(fā)毅弧、用來增強瀏覽器功能的軟件,Chrome瀏覽器擴展開發(fā)算是相當簡...
    overflow_hidden閱讀 7,368評論 0 16
  • 架構(gòu) 總括:Manifest:程序清單Background:插件運行環(huán)境/主程序Pop up:彈出頁面Conten...
    程序員小逗逼閱讀 10,359評論 2 18
  • Define: . 線性結(jié)構(gòu) . 真正的動態(tài)數(shù)組結(jié)構(gòu) . 最簡單的動態(tài)數(shù)據(jù)結(jié)構(gòu) Shape: Class Node...
    享悅moonlight閱讀 261評論 0 0