扩展名出现在浏览器的上下文菜单中

时间:2014-04-24 05:52:36

标签: kango-framework

我正在使用kango框架开发跨浏览器扩展。我想将我的扩展添加到浏览器的上下文菜单中。我已经在extension_info.json文件的permissions数组中设置了" context_menu":true,但是我的扩展名仍未出现在上下文菜单中(当在浏览器窗口中右键单击时)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您需要向main.js添加一个事件监听器,如下所示:

kango.ui.contextMenuItem.addEventListener(kango.ui.contextMenuItem.event.CLICK, function()     {
    kango.browser.tabs.getCurrent(function(tab) {
    tab.dispatchMessage('ContextMenuItemClick');
    });
});

在content.js中你需要使用这样的事件:

function handleContextMenuClick() {
var clickedElement = null;

if ('addEventListener' in document) {
    document.addEventListener('mousedown', function(event) {
        if (event.button == 2 && IsSupported()) {
            clickedElement = event.target;               
            kango.console.log('StopIt menu item click 1');
        }
    }, true);
} else {
    document.attachEvent('onmousedown', function(event) {
        event = event || window.event;
        if (event.button == 2&& IsSupported()) {
            clickedElement = event.srcElement;
            kango.console.log('StopIt menu item click 2');
        }
    });
}

kango.addMessageListener('ContextMenuItemClick', function(event) {
    kango.console.log("addMessageListener: ContextMenuItemClick added");
    });
}

handleContextMenuClick();


// Only activate the menu when the user is on facebook or twitter.
// This should be loaded from a service and updated one each new domain visited.
function IsSupported()
    {
    if(document.domain.indexOf("facebook.") > -1) return true;
    if(document.domain.indexOf("twitter.") > -1) return true;

    return false;
    }