为什么返回false使用alert而不是console.log

时间:2014-02-19 01:02:40

标签: javascript jquery

我有问题。有了这个html:

<div id="d"><div>Click me!</div><div>Or me</div></div>

当我使用此代码时:

$("#d").on("mousedown", "div", function (e){
    console.log('clicked');
    if (e.which == 3) alert('left button clicked');
    return false;
});

它会阻止上下文菜单显示和警告,但是当我使用此代码时:

$("#d").on("mousedown", "div", function (e){
    console.log('clicked');
    if (e.which == 3) console.log('left button clicked');
    return false;
});

它会记录到控制台,但不会阻止上下文菜单。我糊涂了。

Here's a JSFiddle demonstrating the problem.

哦,如果你碰巧发现副本或其他东西,请耐心等待。我确实试图找到它。

2 个答案:

答案 0 :(得分:4)

您没有使用第一个代码阻止上下文菜单。由于alert窗口获得焦点,SOme浏览器不再打开它。阻止菜单的不是return false,而是alert本身。

答案 1 :(得分:3)

我添加了一个更新的小提琴:http://jsfiddle.net/2D32L/12/

$("#f").on("contextmenu", "div", function (e) {
    e.preventDefault();
});

有关详细信息,请参阅this question

其余的我同意Johannes H.;它不是取消上下文菜单的返回值,而是警报。