繼續增加功能
Chrome Extension 分成兩種執行模式
- Backgound Page 永遠執行
- Event Page 則只在請求時執行
ContextMenu 需要在 manifest.json 設定 background ,並設定為 persistent 為 false ,並在 permissions 裡面增加 contextMenus
"background" :{
"scripts" :["eventPage.js"],
"persistent" : false
},
"permissions" : [
"storage",
"notifications",
"contentMenus"
]
在 eventPage.js 創建 contextMenu
var contextMenuItem = {
"id" : "spendMoney",
"title" : "spendMoney",
"contexts" : ["selection"]
};
chrome.contextMenus.create(contextMenuItem);
執行時,只要選取文字,就會看到該 Chrome Extension 的 contextMenu

contextMenus 需要更進一步使用 Click.AddListener 來處理事件 :
chrome.contextMenus.onClicked.addListener(function(clickData){
if(clickData.selectionText){
//....
}
}
var contextMenuItem = {
"id" : "spendMoney",
"title" : "spendMoney",
"contexts" : ["selection"]
};
chrome.contextMenus.create(contextMenuItem);
chrome.contextMenus.onClicked.addListener(function(clickData){
if(clickData.menuItemId=="spendMoney" && clickData.selectionText){
if(isInt(clickData.selectionText)){
chrome.storage.sync.get(['total','limit'],function(budget){
var newtotal = 0;
if(budget.total){
newtotal += parseInt(budget.total);
}
newtotal += parseInt(clickData.selectionText);
chrome.storage.sync.set({'total' : newtotal},function(){
if(newtotal >= budget.limit){
var notifOptions = {
type : 'basic',
iconUrl : 'icon48.png',
title : 'Limit reached',
message : "you're reached your limit!"
}
chrome.notifications.create('limitNotif',notifOptions);
}
})
})
}
}
})
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
結果,已經可以根據事件觸發計算功能

