2012-03-21 60 views
0

我正在做一個測試擴展,但該項目沒有出現在上下文菜單中。這裏有什麼問題?谷歌瀏覽器中沒有出現上下文菜單圖標

我的清單文件

{ 
"name": "Colour", 
"version": "1.0.1", 
"description": "Colour the background on right clicking image.", 
"offline_enabled": true, 
"permissions" : [ 
"contextMenus", 
    "tabs", 
    "http://*/*", 
    "https://*/*" 
], 
"background_page":"background.html" 
} 

我background.html包含此腳本

function getColour(info, tab){ 
    document.body.style.background="#456"; 
} 

chrome.contextMenus.create({ 
    "type":"normal", 
    "title":"Colour page", 
    "contexts":["image"], 
    "onclick":getColour() 
}); 

回答

3

getColour函數的引用將被傳遞。應該be invoked

function getColour(info, tab){ 
    document.body.style.background="#456"; 
} 

chrome.contextMenus.create({ 
    "type": "normal", 
    "title": "Colour page", 
    "contexts": ["image"], 
    "onclick": getColour // <--- Removed() 
}); 

以前,你的代碼將在這樣的工作:

  1. getColour() - 電話getColour
  2. 函數中沒有return語句,所以它返回undefined
  3. chrome.contextMenu.create({ ... "onclick": undefined }); - 沒有事件處理程序
+0

@Shikhar Sharma如果你在理解調用/調用/執行一個函數和引用一個函數(如回調函數)之間的區別時仍然有問題,那麼就說出來,然後我試着寫一個解釋它的答案。我自己在開始時遇到了一些問題(如果你在Waha的某個地方,謝謝;)) – PAEz 2012-03-21 17:05:27

+0

@PAEz這並不困難:當一個函數名由兩個括號後綴,例如name() ,該函數被**調用**。當這些被遺漏時,**函數的引用被傳遞,例如'name' – 2012-03-21 17:08:03

+0

我現在得到了這個,但是它讓我犯了3次錯誤,讓Waha在我真正得到它之前給我解釋它。特別是當涉及回調的想法時。 – PAEz 2012-03-21 17:15:29