JS:如何防止中键的默认处理?

Dav*_*her 5 javascript preventdefault

这似乎是一个荒谬的简单问题,但似乎更难......

我想阻止对中键的默认处理。我创建了一个的jsfiddle并加送stopPropagationstopImmediatePropagationpreventDefaultreturn false-就像这样:

$(document).on("mousedown", "a", function(e)
{    
    console.log("\nprevent mousedown...");
    e.stopPropagation();
    e.stopImmediatePropagation();
    e.preventDefault();
    console.log("...mousedown prevented");
    return false;
});
Run Code Online (Sandbox Code Playgroud)

但是中键被触发。顺便说一句,当我松开中间按钮时它会被触发。这是 JSFiddle:http : //jsfiddle.net/Gq4p9/4/

在 Chrome 29、Firefox 23 和 IE11 上测试。

我希望你们中的某个人能找出为什么这个脚本不会阻止默认处理。

Mor*_*ler 5

正如您在评论中提到的,如果您将jQuery 对象作为选择器传递,它会起作用

$(document).on ("click", $("a"), function (e) { ...
Run Code Online (Sandbox Code Playgroud)

尽管APIselector预计是字符串类型。

小提琴


此外,您始终可以只使用普通的 javascript 单击事件侦听器。

link.addEventListener ("click", function (e) {
  if (e.which === 2) 
      e.preventDefault();
})
Run Code Online (Sandbox Code Playgroud)

这是一把小提琴