【问题标题】:e.preventDefault() & return false not working in firefoxe.preventDefault() 并返回 false 在 Firefox 中不起作用
【发布时间】:2015-02-28 17:58:12
【问题描述】:

铬:

以下代码在 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。但返回 false;不管用。

当我将 console.log 替换为 alert 时,它就可以工作了。但我不能也不想使用警报。

我也试过 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

您可以参考下面的链接以获得更清晰的信息。

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

我需要您的宝贵意见。

【问题讨论】:

标签: javascript jquery firefox mouseevent


【解决方案1】:

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

  • IE 5-8 不会阻止文本输入和文本区域的默认设置。
  • IE9/10Opera 在您单击同一组中的另一个单选按钮时错误地取消选中单选按钮。它没有正确地检查新收音机。
  • IE 5-8、Firefox、Opera 不会阻止选择框的默认设置。
  • FirefoxChrome 觉得必须选中一个单选按钮。如果所有选项都未选中,他们会检查您点击的第一个,即使默认设置已被阻止。

有关更多信息,请参阅Events - click, mousedown, mouseup, dblclick

【讨论】:

  • 关于 Opera 和 IE 9/10 主题的 It correctly doesn't check the new radio 是什么意思?
【解决方案2】:

我在 Firefox 上遇到了同样的问题,与

有关
preventDefault();

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

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

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

因此每个浏览器都可以轻松识别关键事件。

希望对您有所帮助!

【讨论】:

    【解决方案3】:

    我在 FF 中也遇到过类似的问题。

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2014-10-23
      • 2015-07-13
      相关资源
      最近更新 更多