右键单击继续在Firefox中传播

Rob*_*ith 2 javascript firefox right-click stoppropagation

我刚注意到一些不寻常的事 这就是我想要完成的事情:

  • 我想在点击链接时显示div

  • 当我点击文档中的其他位置时,我希望div消失

  • 当我点击div本身时,我不希望它消失

像这样的东西:

http://jsfiddle.net/XPmyF/

JS:

(function() {
    var box = $('#box');
    $(document).on('click', function() {
        if (box.css('display') == 'block') {
            box.css('display', 'none');
        }
    });
    $('#start').on('click', function(e) {
        box.css({
            'text': 'Box',
            'position': 'absolute',
            'top': '50px',
            'left': '0',
            'background': '#EEE',
            'border': '1px solid #555',
            'width': '200px',
            'height': '50px',
            'display': 'block'
        });
        e.stopPropagation();
    });

    box.on('click', function(e) {
        e.stopPropagation();
    });
})();?
Run Code Online (Sandbox Code Playgroud)

这个小提琴工作得很好但是当我在Firefox(15.0.1)中测试它时,如果你右键点击div,它会消失,这不是我正在寻找的行为.似乎stopPropagation()适用于点击,但不适用于Firefox中的右键单击.Chrome会将右键单击传播到文档.

我该如何解决?

谢谢

Gre*_*oss 5

使用event.which方法检测单击了哪个按钮.这是jsfiddle中的一个例子.

$(document).on('click', function(event) {
    if (event.which == 1 && box.css('display') == 'block') {
        box.css('display', 'none');
    }
});
Run Code Online (Sandbox Code Playgroud)