2012-03-21 63 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