e.preventDefault()&返回false不能在firefox中工作

时间:2015-01-02 11:36:16

标签: javascript jquery firefox mouseevent

Chrome:

以下代码适用于Chrome。

 $('.links').click(function(e) {
    if(e.which == 2) {
       console.log(e.which);    // prints 2
       //e.preventDefault();
       //e.stopPropagation();
       return false;
    }
 });

Firefox:

由于上面的代码没有捕获firefox中的中键/鼠标滚轮点击事件,我尝试了以下能够捕捉鼠标滚轮点击事件。

$('.links').mousedown(function(e) {
    if(e.which == 2) {
       console.log(e.which);     // prints 2
       //e.preventDefault();
       //e.stopPropagation();
       return false;
    }
 });

以上代码打印2.但返回false;不管用。

当我用alert替换console.log时它会起作用。但我不能&不想使用警报。

我也尝试过mouseup,mousewheel事件。但它没有用。

我也试过了attachEvent,但是我收到了一个错误(attchEvent不是函数)。

我正在使用下面提到的js文件:

  1. jQuery的1.10.2.min.js
  2. jquery.easyui.min.js
  3. 的jquery-ui.js
  4. jquery.ui.core.js
  5. 您可以参考以下链接以获得更清晰的信息。

    jsfiddle.net/nilamnaik1989/vntLyvd2/3

    jsfiddle.net/nilamnaik1989/2Lq6mLdp

    http://jsfiddle.net/nilamnaik1989/powjm7qf/

    http://jsfiddle.net/nilamnaik1989/q6kLvL1p/

    以下是一些很好的链接。但无论如何它并没有解决我的问题。

    event.preventDefault() vs. return false

    event.preventDefault() vs. return false (no jQuery)

    http://www.markupjavascript.com/2013/10/event-bubbling-how-to-prevent-it.html

    我需要你宝贵的意见。

3 个答案:

答案 0 :(得分:0)

所有点击默认操作都应该是可取消的。这是这一重要事件的重点之一。但是,某些浏览器有例外:

  • IE 5-8 不会阻止文本输入和textareas的默认设置。
  • IE9 / 10 &当您单击同一组中的另一个电台时, Opera 会错误地取消选中单选按钮。它没有检查新收音机。
  • IE 5-8,Firefox,& Opera 不会阻止选择框上的默认设置。
  • Firefox & Chrome 认为必须选中一个单选按钮。如果未选中所有内容,即使默认设置被阻止,它们也会检查您单击的第一个。

有关详情,请参阅Events - click, mousedown, mouseup, dblclick

答案 1 :(得分:0)

我遇到与firefox相同的问题,与

有关
preventDefault();

在Safari,Chrome,Opera甚至IE9中都可以正常运行(不是开玩笑) 但是,经过大量阅读后,我看到该网站正在使用旧的jquery版本(1.10),然后更新到最新版本(2.1.4),即使在Firefox中也取消了该操作。

另一件需要考虑的事情是我使用了名为“keyPressed”的变量,如:

var keyPressed = event.keyCode || event.which || event.charCode

因此,每个浏览器都很容易识别关键事件。

希望这有帮助!

答案 2 :(得分:0)

我在中间点击时遇到了FF中的类似问题。

以下脚本解决了我的问题,它也适用于FF。

$(document).on('click', $(".content"), function(e) {
    if(e.button==1) {
        e.preventDefault();
        return false;
    }
})