如何在不禁用整个文档的contextMenu的情况下禁用元素的上下文菜单?

时间:2012-12-14 00:43:12

标签: javascript

我有这段代码禁用div

上下文菜单
    disableContextMenu = function (e){ 
        if(e.stopPropagation)
            e.stopPropagation();
        if(e.preventDefault)
            e.preventDefault();
        e.cancelBubble = true;
        return false;
    };
    clickedElement.oncontextmenu = disableContextMenu;
    if(clickedElement.addEventListener){
        clickedElement.addEventListener('contextmenu', disableContextMenu, false);
    }else if(clickedElement.attachEvent){
        clickedElement.attachEvent('oncontextmenu', disableContextMenu);
    }

这符合预期。但是当我添加一个mouseup处理程序时,上下文菜单会再次出现。

        clickedElement.onmousedown = function (e){
        if(e.which == 3){
            if(e.stopPropagation)
                e.stopPropagation();
            if(e.preventDefault)
                e.preventDefault();
            elementToShow.style.position = 'absolute';
            elementToShow.style.left = e.pageX + 'px';
            elementToShow.style.top = e.pageY + 'px';
            elementToShow.style.display = 'block';
            return false;
        }
    }

这在我的IE9中不起作用。我使用了文档而且它有效,但我不想禁用文本框和其他元素的上下文菜单。我怎么能这样做?

不建议我不要使用它。这是一个客户项目,这是一项要求。

1 个答案:

答案 0 :(得分:1)

您也可以检查事件的目标,并且仅当该目标是您不想要它的对象时才禁用上下文菜单。