0

我有这个代码来禁用上下文菜单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 中不起作用。我改用了文档,它可以工作,但我不想禁用文本框和其他元素的上下文菜单。我怎样才能做到这一点?

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

4

1 回答 1

1

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

于 2012-12-14T02:09:52.730 回答