Raphael:右键单击无法使用默认上下文菜单

时间:2014-05-14 01:57:05

标签: javascript raphael

根据this question的回答,我尝试禁用默认浏览器上下文菜单,而是显示自定义菜单。正如您在此jsfiddle中看到的那样,右键单击会显示rect,但会显示默认菜单。我试过Chrome和IE,行为是一样的。这段代码有什么问题?

这是HTML:

<div id="canvas"></div>

这是CSS:

#canvas {
  width: 500px;
  border: 1px solid #aaa;
}

和Javascript:

    var menu = null;
    var paper = new Raphael(document.getElementById('canvas'), 500, 500);
    var rect2 = paper.rect(100, 100, 180, 180 ).attr({"fill" : "green" });

    rect2.node.oncontextmenu = function(){ return false; }

    rect2.mousedown(function(e) {

        if ( e.which != 3 ) // only allow right click
            return;

        menu = paper.rect ( e.offsetX, e.offsetY, 100, 100).attr({stroke: '#000000', fill:'#c2c2c2',"stroke-width":1});
    });

1 个答案:

答案 0 :(得分:1)

您必须取消默认操作

function eventHandler(e){
    e = e || window.event;

    if(e.stopPropagation)
        e.stopPropagation();
    if(e.preventDefault)
        e.preventDefault();
    e.cancelBubble = false;

    return false;
}

http://jsfiddle.net/8Zy3F/3/

http://jsfiddle.net/tSGC5/