e.preventDefault() 并返回 false 在 Firefox 中不起作用

e.preventDefault() & return false not working in firefox

本文关键字:Firefox 不起作用 false 返回 preventDefault      更新时间:2023-09-26

Chrome :

以下代码在 Chrome 中工作。

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

火狐 :

由于上面的代码在Firefox中没有捕获中间按钮/鼠标滚轮单击事件,因此我尝试遵循能够捕获鼠标滚轮单击事件的方法。

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

上面的代码打印 2。 但返回假;不工作。

当我用警报替换控制台.log时,它可以工作。 但我不能也不想使用警报。

我尝试了鼠标向上,鼠标滚轮事件也。 但它没有用。

我也尝试了附加事件,但是,我遇到了一个错误(attchEvent 不是一个函数)。

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

  1. jQuery-1.10.2.min.js
  2. jquery.easyui.min.js
  3. jquery-ui.js
  4. jquery.ui.core.js

您可以参考以下链接以更清楚地了解情况。

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

我需要你们的宝贵意见。

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

  • IE 5-8 不会阻止文本输入和文本区域的默认值。
  • IE9/10 & Opera 在单击同一组中的另一个收音机时错误地取消选中单选按钮。它不会正确检查新无线电。
  • IE 5-8、FirefoxOpera 不会阻止选择框的默认设置。
  • FirefoxChrome 认为必须选中一个单选按钮。如果全部未选中,他们将检查您单击的第一个,即使默认设置被阻止。

请参阅事件 - 单击、鼠标向下、鼠标向上、dblclick 了解更多信息。

我在使用Firefox时遇到了同样的问题,与

preventDefault();

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

要考虑的另一件事是,我使用了一个名为"keyPressed"的变量,如下所示:

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

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

希望这有帮助!

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

以下脚本解决了我的问题,它在 FF 中也能正常工作。

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