最近 facebook 使用越來越重度的傾向,所以做了這個 Chrome Extension 過一段時間就提醒該回去工作了
先建立 manifest.json 檔案
{
"manifest_version" :2,
"name" : "FacebookStop",
"version" : "1.0",
"description" : "快去工作",
"icons" :{
"128" : "icon128.png",
"48" : "icon48.png",
"16" : "icon16.png"
},
"browser_action" : {
"default_icon" : "icon16.png"
},
"background" :{
"scripts" :["eventPage.js"],
"persistent" : false
},
"permissions" : [
"tabs"
]
}
browser_action 是因為我想要使用chrome.browserAction.setBadgeText({text: "27"});
他可以在 icon 顯示數值
eventPage.js 檔案內容 :
使用了 onCreated、onUpdated、onActivated 三個事件檢查 url 然後把網址丟給 checkUrl 看我是不是正在瀏覽 facebook
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);
});
});
然後 checkUrl 內容 -檢查 url 是否為 facebook 開頭,如果是,就設定時間,並呼叫 countDown 開始倒數
var count = 30; //計數器
var time = 30; //所設定的時間
var myTimer; //每秒執行一次的 function
function checkUrl(url){
var regex = new RegExp('^https://www.facebook.com/');
if(regex.test(url)){
if(myTimer!== undefined){
clearTimeout(myTimer);
}
count = time;
myTimer = countDown();
}
else{
if(myTimer!== undefined){
clearTimeout(myTimer);
}
}
}
最後,countDown - 持續更新 count 並顯示,時間到的時候會彈跳視窗
function countDown(){
count--;
chrome.browserAction.setBadgeText({text: count.toString()});
if(count > 0){
myTimer = setTimeout(countDown,1000);
}
else{
alert('你老闆在你後面,他很火!');
count = time;
myTimer = setTimeout(countDown,1000);
}
chrome.browserAction.setBadgeText({text: count.toString()});
}
執行結果 :
在瀏覽 facebook 的時候,數值會持續倒數
時間到的時候會彈跳一個視窗告訴你該回去面對現實了
感謝收看 :)