前言
這已經不是我第一次寫google套件了,上一個作品距今約6個月! 時間可真快~!
這次的成品一樣相當的簡單,很多時候你不需要太複雜的技術就能幫到你:D
專案介紹
我希望弄一個套件去提醒我,每當我打開youtube或是netflix的時候就出現一個倒數計時器,時間一到就跳出視窗詢問我是否要繼續耍廢!如果選擇否則關掉視窗,選擇是則重新開始一次倒數計時。
概念相當的簡單,我們先複習一下要怎麼寫一個簡單的chrome套件,IT邦的很多文章真的都很棒~!幫我省了不少時間研究。
專案需求
- 任何程式碼編輯器,我自己是VScode的愛用者。
- 一個manifest.json檔案,不要懷疑,自己寫一個。
- 3種不同大小的的icon
manifest.json
{
"manifest_version": 2, //套件框架版本,現行chrome要求至少2以上
"name": "go-to-work",
"version": "1.7", //版本號,必填,且一定要是這樣的格式
"description": "Stop browsing other pages!Go to work!",
"icons": { //要準備三種不同大小的icon,可以去iconfinder.com找
"128": "icon128.png",
"48": "icon48.png",
"16": "icon16.png"
},
"browser_action": { //出現在瀏覽器右上角的圖示,就像你所有的套件一樣
"default_icon": "icon16.png"
},
"background": { //運行的腳本
"scripts": [
"eventPage.js"
],
"persistent": false
},
"permissions": [ //要使用的權限,這次是要監控分頁,所以選擇tabs
"tabs"
]
}
eventPage.js
//監控開出新分頁
chrome.tabs.onCreated.addListener(function (tab) {
checkUrl(tab.url);
});
//監控分頁更新
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.url !== undefined) {
checkUrl(changeInfo.url);
}
});
//監控現行分頁
chrome.tabs.onActivated.addListener(function (activeInfo) {
chrome.tabs.get(activeInfo.tabId, function (tab) {
checkUrl(tab.url);
});
});
//下方為程式碼
var count = 10; //計數器
var time = 10; //所設定的時間
var myTimer; //每秒執行一次的 function
//檢查是否是耍廢的分頁之一
function checkUrl(url) {
var regex = new RegExp('^https://www.netflix.com/ |^https://www.youtube.com/');
//若是耍廢的分頁,則先恢復倒數計時,並執行倒數
if (regex.test(url)) {
if (myTimer !== undefined) {
clearTimeout(myTimer);
}
count = time
myTimer = countDown();
} else {
//若不是耍廢的分頁,則停止倒數計時
if (myTimer !== undefined) {
clearTimeout(myTimer);
}
}
function countDown() {
count--;
chrome.browserAction.setBadgeText({ text: count.toString() });
if (count > 0) {
myTimer = setTimeout(countDown, 1000);
}
else {
if (confirm("準備好要面對現實了嗎?")) {
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.tabs.remove(tabs[0].id)
})
} else {
alert('哼!隨便你!反正10秒後我會再問一次!')
};
count = time;
myTimer = setTimeout(countDown, 1000);
}
}
}
此時你的專案結構應該會像這樣

載入套件
這樣前置動作就完成了,接著請你前往chrome://extensions/
選擇左上角的載入未封裝套件,這樣你第一個chrome套件就完成囉!
專案預覽

參考文章