谷歌Chrome扩展程序&上下文菜单:如何将一个函数用于多种用途?

时间:2011-10-11 13:40:12

标签: javascript google-chrome google-chrome-extension contextmenu

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

此示例添加了两个上下文菜单项,一个用于缩短与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});

接收函数看起来像这样,默认情况下,infotab都与请求一起发送,但我不认为我可以找出哪个上下文菜单称为函数从那起。

function shortenLink(info, tab){


}

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

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

我知道我可以为每个项目设置单独的功能,但是我想添加很多上下文菜单项,它们都共享很多相同的代码,所以我真的只想要一个“发送” “他们都使用的功能。我怎么能这样做?

修改

也许我可以使用menuItemId变量找出它所调用的菜单项,但是我可以传递其他参数或其他一些数据,例如{method:'bitly'}吗?

1 个答案:

答案 0 :(得分: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){
    ...
}