国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何開發一款自己的Chrome擴展插件

系統 瀏覽器
chrome瀏覽器的擴展開發其實并不難,用到的知識都是基礎的js,html,css,我們只需要知道一些和瀏覽器交互的屬性和操作的api,就可以開發出一個屬于自己的瀏覽器擴展。

說到現如今最流行的瀏覽器,那么一定是chrome,無論是它的速度,還是它的穩定性,還是它的簡潔,都讓人愛不釋手,此外,更多的人選擇它的理由是它有著豐富的擴展插件,這些擴展插件讓你的瀏覽器變得異常強大,讓你的瀏覽器不僅僅是瀏覽器。

Chrome擴展結構

chrome的擴展是以.crx結尾的安裝包,如果你把它下載下來,并把它重命名為.rar壓縮包文件,然后你就可以使用壓縮軟件對它進行解壓,加壓之后,就會發現其實chrome的擴展包里面就是一些js,css,html文件,可以說你只要會寫前端,那么開發一個chrome擴展插件將會非常容易。

在這些文件中,有一個manifest.json文件,它是擴展的描述文件,定義了擴展的名稱和版本號等信息。

{
"name": "BrowserActionExtension",
"version": "0.0.1"
"manifest_version": 2,
"browser_action": {
"default_title": "That's the tool tip",
"default_popup": "popup.html"
}
}

在這個配置文件中,你還可以添加其它屬性,只要你的擴展需要的屬性,你都可以在這里添加配置。

每一個擴展都有一個被瀏覽器運行的背景頁,此外還有事件頁面,背景頁面一直都是激活狀態,而事件頁面只是在觸發事件的時候才會激活,因此為了節省內存和提高瀏覽器的性能,盡可能選擇事件頁面。兩者通過persistent屬性進行區分。

"background": {
"scripts": ["background.js"],
"persistent": false/true
}

當我們的擴展想要訪問瀏覽器當前頁面的dom樹的時候,我們需要使用內容腳本,這些腳本會在頁面刷新的時候執行。

"content_scripts": [
{
"matches": ["https://*/*", "https://*/*"],
"js": ["content.js"]
}
]

對于擴展的UI界面,我們可以通過browser_action屬性進行配置,通過此屬性,我們可以設置擴展的圖標,設置點擊彈出的頁面。

"browser_action": {
"default_icon": {
"19": "icons/19x19.png",
"38": "icons/38x38.png"
},
"default_title": "That's the tool tip",
"default_popup": "popup.html"
}

除了browser_action可以配置擴展圖標之外,page_action可以配置圖標,兩者的區別是,browser_action總是顯示在擴展欄,而page_action則是滿足一定條件才會顯示,比如頁面有vue腳本時候才會顯示vue調試圖標。

"page_action": {
"default_icon": {
"19": "images/icon19.png",
"38": "images/icon38.png"
},
"default_title": "Google Mail",
"default_popup": "popup.html"
}

chrome被開發人員所喜愛的另一個原因是它提供了非常強大的調試工具欄,而我們的擴展也是可以加入到調試工具欄的。

通過使用devtools_page屬性,我們就可以將我們的擴展加入到調試工具欄的一個tab中。

"devtools_page": "devtools.html"

我們在devtools.html中只需要添加一個js引入語句就可以。

"devtools_page": "devtools.html"

在devtools.js文件里,我可以可以放入我們實際的擴展內容。

chrome.devtools.panels.create(
"MyExtension",
"img/icon16.png",
"index.html",
function() {

}
);

擴展能夠做什么

擴展能夠做什么主要取決于瀏覽器為我們提供了哪些API,慶幸的是,chrome為我們提供了足夠多好用的API。

  • 我們可以操作用戶的書簽和瀏覽記錄
  • 我們可以控制下載,管理下載內容
  • 我們可以監聽網絡請求,監聽事件響應
  • 我們可以修改界面樣式,可以添加自定義css
  • 我們可以在頁面添加想要的元素

總之,chrome幾乎為我們提供了完整控制瀏覽器的擴展api,正是有了這些api,才誕生了幾十萬的擴展插件。

擴展的調試

在我們本地開發好擴展之后,我們可以通過本地瀏覽器進行調試。

首先,我們需要先進入擴展程序頁面,打開開發者模式

然后,我們可以通過選擇加載已解壓的擴展程序加載我們的擴展。

最后,我們通過在控制臺輸出調試信息來調試我們的擴展。

完整的示例

manifest.json:

{
"name": "BrowserExtension",
"version": "0.0.1",
"manifest_version": 2,
"description" : "Description ...",
"icons": { "16": "icons/16x16.png", "48": "icons/48x48.png", "128": "icons/128x128.png" },
"omnibox": { "keyword" : "yeah" },
"browser_action": {
"default_icon": { "19": "icons/19x19.png", "38": "icons/38x38.png" },
"default_title": "That's the tool tip",
"default_popup": "browseraction/popup.html"
},
"background": {
"scripts": ["background.js"],
"persistent": false
},
"chrome_url_overrides" : {
"newtab": "newtab/newtab.html"
},
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"]
}],
"devtools_page": "devtools/devtools.html"
}

background.js:

// omnibox
chrome.omnibox.onInputChanged.addListener(function(text, suggest) {
suggest([
{content: "color-divs", description: "Make everything red"}
]);
});
chrome.omnibox.onInputEntered.addListener(function(text) {
if(text == "color-divs") colorDivs();
});

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
switch(request.type) {
case "color-divs":
colorDivs();
break;
}
return true;
});

chrome.extension.onConnect.addListener(function (port) {
port.onMessage.addListener(function (message) {
switch(port.name) {
case "color-divs-port":
colorDivs();
break;
}
});
});

// send a message to the content script
var colorDivs = function() {
chrome.tabs.getSelected(null, function(tab){
chrome.tabs.sendMessage(tab.id, {type: "colors-div", color: "#F00"});
// setting a badge
chrome.browserAction.setBadgeText({text: "red!"});
});
}

popup.html:

<script type="text/javascript" src="popup.js"></script>
<div style="width:200px">
<button id="button">Color all the divs</button>
</div>

popup.js:

window.onload = function() {
document.getElementById("button").onclick = function() {
chrome.extension.sendMessage({
type: "color-divs"
});
}
}

devtools.html:

window.onload = function() {
var port = chrome.extension.connect({ name: "color-divs-port" });
document.getElementById("button").onclick = function() {
port.postMessage({ type: "color-divs"});
}
}

content.js:

chrome.extension.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.type) {
case "colors-div":
var divs = document.querySelectorAll("div");
if(divs.length === 0) {
alert("There are no any divs in the page.");
} else {
for(var i=0; i<divs.length; i++) {
divs[i].style.backgroundColor = message.color;
}
}
break;
}
});

總結

chrome瀏覽器的擴展開發其實并不難,用到的知識都是基礎的js,html,css,我們只需要知道一些和瀏覽器交互的屬性和操作的api,就可以開發出一個屬于自己的瀏覽器擴展。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2017-03-01 17:47:46

Chrome

2021-09-26 05:00:11

Vscode插件

2021-11-02 14:19:15

插件MavengroupId

2016-09-21 12:34:10

Chrome瀏覽器插件

2017-03-07 11:25:58

IT技術周刊

2021-04-08 09:35:10

瀏覽器 Chrome Google

2022-02-23 14:21:20

Chrome插件瀏覽器

2011-06-17 11:22:33

jQueryjQuery插件

2011-08-09 09:16:44

Eclipse

2013-09-04 13:27:05

Linux發行版

2009-12-04 10:19:04

2011-01-19 13:19:39

Thunderbird插件

2022-04-30 09:49:58

終端工具插件

2014-12-16 10:11:22

2020-03-12 12:55:19

擴展插件瀏覽器

2013-08-01 15:12:43

2009-06-02 09:15:43

2009-09-15 09:29:29

Google Chro擴展插件谷歌

2021-07-28 06:51:09

linux

2017-03-06 11:02:59

產品軟件Power Desig
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区伦理| 在线免费色视频| 欧美剧情电影在线观看完整版免费励志电影| 91成人短视频| 成人av一级片| 日韩经典第一页| 日韩激情一区二区| 一区二区三区视频在线观看视频| 国产精品国产福利国产秒拍| 久久综合色天天久久综合图片| 中文在线最新版地址| 一区二区视频在线免费| 亚洲精品一区二区三区精华液| 国产亚洲午夜| 国产不卡在线| 欧美亚洲另类久久综合| 欧美日韩日日骚| 亚洲激情在线| 成人在线观看免费网站| 欧美12av| 精品国产电影一区二区| 欧美亚洲一区二区三区| 黄色成人影院| 亚洲v欧美v另类v综合v日韩v| 精品国产乱码久久久久久浪潮| 狂野欧美一区| 看黄在线观看| 99久久免费观看| 最好看的2019年中文视频| a亚洲天堂av| 国产精品色婷婷在线观看| www.超碰com| 欧美一区二区三区免费视| 亚洲综合一区二区三区| 日韩成人影院| av片在线免费观看| 色综合666| 一本大道亚洲视频| 国产午夜精品福利| 色88888久久久久久影院| 啦啦啦啦免费高清视频在线观看1| 成人黄色网免费| 一区二区三区成人在线视频| 《视频一区视频二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲国产高清福利视频| 亚洲国产日韩一区| 国产suv精品一区二区| 丁香六月激情网| 69免费视频| 妺妺窝人体色www在线观看| 国产精品成人va在线观看| 欧美精品一区在线播放| 久久精品精品电影网| 亚洲国产精品中文| 欧美日本国产一区| 亚洲国产成人va在线观看天堂| 欧美激情第二页| 日韩美女毛片| 精品国产第一国产综合精品| 国产精品97在线| 伊人久久大香线蕉综合75| 久久久久久久久久久91| 色屁屁一区二区| 99这里只有久久精品视频| 狠狠久久婷婷| 国产精品视频一区二区三区综合| 高清一区二区中文字幕| 99久久伊人| 欧美大电影免费观看| 神马久久资源| 国产网站免费观看| 91福利在线视频| 你懂的视频在线一区二区| 三级精品视频久久久久| 亚洲国产欧美在线| 日韩va亚洲va欧美va久久| 精品国产亚洲一区二区三区在线 | 午夜久久久久久| 日韩电影在线观看一区| 久久一级大片| 91精彩视频在线观看| 日韩精品免费一线在线观看| avove在线观看| 婷婷成人综合| 亚洲国产精品av| 亚洲精品国产精品国产自| 老牛嫩草一区二区三区日本| 国产美女亚洲精品7777| 欧美日韩电影在线播放| 亚洲专区一区二区三区| 波多野结衣欧美| 四虎影视成人| www.成人69.com| 亚洲国产日韩美| 日本中文字幕不卡免费| 精品国产乱码久久久久久久| 亚洲三级免费电影| 国产一区二区在线影院| 欧美顶级大胆免费视频| 男人亚洲天堂| 欧美精品电影| 成人午夜影院| 2021国产视频| 风间由美一区二区三区| 国内免费精品永久在线视频| 精品国产在天天线2019| 狠狠躁夜夜躁人人爽超碰91 | 免费理论片在线观看播放老| www.com毛片| 日本黄网免费一区二区精品| 国产成人精品综合久久久| 在线看日韩欧美| 欧美一区二区视频网站| 亚洲一区二区三区自拍| 久久综合av免费| 精品一区二区三区免费观看| 黄色成人在线网站| 国产区精品区| 精品国产一区二区三区2021| 24小时免费看片在线观看| 国产免费a∨片在线观看不卡| 男男gay免费网站| 91传媒久久久| 老汉色影院首页| 精品国产一区二区三区免费 | 水野朝阳av一区二区三区| 日韩欧美一区二区三区免费看| 日韩精品成人| 超碰这里只有精品| 国内激情视频在线观看| 午夜老司机在线观看| 一级毛片在线观| 激情婷婷丁香| 免费的很黄很污的视频网站| 日本日本19xxxⅹhd乱影响| 伊人久久99| 日本成人三级| 久久精品美女| 国产精品久久久一区二区三区 | 国产精品国产自产拍在线| 成人午夜av在线| 久久国产精品99久久久久久老狼| 亚洲一区国产| 国产一区日韩一区| 一本到12不卡视频在线dvd| 欧美日韩国产高清电影| 自拍欧美一区| 九九在线高清精品视频| 久久中文字幕导航| 高清一区二区三区| 丁香综合av| 精品按摩偷拍| 欧洲在线一区| 亚洲8888| 国产一区三区在线播放| 国产一区二区精品福利地址| 精品中文一区| 国产探花在线精品| 欧美综合另类| 91精品国产乱码久久久久久久 | 国产精品日韩在线一区| 日本国产欧美一区二区三区| 欧美精品第一页在线播放| 欧美精品中文字幕一区| 久久av在线播放| 欧美日产国产成人免费图片| 高清亚洲成在人网站天堂| 992tv成人免费视频| 日韩免费在线视频| 国产精品亚洲精品| 99国产在线| 欧美一区二区三区四区在线观看地址| 日本免费高清一区| 蜜桃视频成人在线观看| 成人免费视频91| 天天插天天操天天射| av毛片免费| 青青草视频免费在线观看| 999国产在线视频| 欧美激情成人动漫| 美女写真久久影院| 日韩视频在线直播| 精品国产一区探花在线观看| 欧美不卡一区| 手机精品视频在线观看| 国产成人一区二区精品非洲| 久久蜜桃av一区精品变态类天堂| 国产亚洲成aⅴ人片在线观看 | 亚洲视频在线观看一区二区三区| 亚洲成人福利在线| av女同在线| √新版天堂资源在线资源| 成人免费高清观看| 国产电影一区二区三区爱妃记| 最新精品在线| 欧美不卡视频| 国产一区二区毛片| 国产精品视频线看| 欧美性猛交xxxx黑人交|