Google Chrome扩展程序和上下文菜单:如何将一个功能用于多种用途?

cwd*_*cwd 1 javascript google-chrome contextmenu google-chrome-extension

这是我想要做的一个例子,为了在这里发布,它被简化了.我想添加几个实际调用相同函数的上下文菜单项,然后在函数内部,我希望能够区分调用哪一个并相应地对其进行操作.

此示例添加了两个上下文菜单项,一个用于缩短链接,bit.ly另一个用于使用tinyURL.

chrome.contextMenus.create({'title': 'Shorten with bit.ly',
                            'contexts': ['all'],
                            'onclick': shortenLink});

chrome.contextMenus.create({'title': 'Shorten with tinyURL',
                            'contexts': ['all'],
                            'onclick': shortenLink});
Run Code Online (Sandbox Code Playgroud)

接收功能看起来是这样的,默认情况下都infotab与请求一起发送,但我不认为我可以找出哪些上下文菜单,只是从调用函数.

function shortenLink(info, tab){


}
Run Code Online (Sandbox Code Playgroud)

这是这两个变量的控制台转储:

Picture.png http://img198.imageshack.us/img198/354/picturedw.png

我知道我可以为每个项目设置单独的函数,但是我想添加很多上下文菜单项,它们都共享很多相同的代码所以我真的只想拥有一个"dispatch"函数他们都使用.我怎样才能做到这一点?

编辑

也许我可以通过使用menuItemId变量找出它所调用的菜单项,但我可以传递一个额外的参数或一些额外的数据,如{method:'bitly'}

ser*_*erg 5

chrome.contextMenus.create({'title': 'Shorten with bit.ly',
                            'contexts': ['all'],
                            'onclick': function(info, tab) {
                                shortenLink(info, tab, {method:'bitly'});
                            });

function shortenLink(info, tab, methodObj){
    ...
}
Run Code Online (Sandbox Code Playgroud)