【问题标题】:Firefox preventDefault of alt-keyFirefox preventDefault of alt-key
【发布时间】:2017-01-19 17:50:33
【问题描述】:

我在 Firefox 50.1.0 上并试图阻止菜单栏下拉菜单(通过 JS),它是通过在按下 alt 键时按一个键(例如 s)触发的也是。

我尝试了 preventDefault、stopPropagation 和 consorts,但无法让它以任何方式工作。我在这里或其他地方找不到任何工作示例。

我尝试过的最明显的路径,但不起作用。

document.onkeydown = function (e) { e.preventDefault(); };

带有 onkeypress 或其他 DOM 元素的变体也没有。

谁能给我一个普通的 JS 示例,它可以禁用/阻止 alt-s 上的默认操作或 Firefox 上的类似操作?

【问题讨论】:

    标签: javascript firefox dom-events keyboard-events


    【解决方案1】:

    我认为这已在较新版本的 Firefox 上被禁用。在他们的bugtracker 上关于它的争论已经持续了将近 10 年,最近它又重新开放了。

    没有理由你的函数不应该工作,而且我使用更具体的 event.altKey 或其他一些排列也没有成功。

    如果您想确认,我建议您尝试使用旧版本的 FF。

    编辑:鉴于 lleaff 的其中一个 cmets,您使用的是什么操作系统?

    【讨论】:

      【解决方案2】:

      当用户关注页面时,您的解决方案会起作用。 当焦点不在网页 istelf 上时(例如,如果用户单击地址栏),则无法阻止此行为。

      【讨论】:

      • 它绝对不适用于最新版本的 FF - 我在 52.x 开发版上,既没有 OP 的功能,也没有使用 event.altkey 覆盖默认行为。某些事情可能已经改变,自 2007 年以来,关于是否允许在 Bugzilla 上一直存在很大的争论,状态已重新打开,最后一次修改是 2016 年 12 月 12 日。
      • 很奇怪,它适用于我在 FF 48.x、FDE 52.x 和 Nightly 53.x 上,都在 Windows 10 上。确保在测试之前单击页面 DOM 的某些部分。
      • 我在页面中,点击了一个元素但没有成功。虽然我使用的是 Linux,所以有可能(尽管我会说它很渺茫)它与此有关。所有其他键都按预期被忽略。绝对很奇怪。
      • 我也有这个问题。 Windows 7 上的 Firefox 50.1.0。以前可以工作,突然停止工作,烦人,因为它是我们的内部系统,我们使用 alt + s 提交工单回复(模仿 Outlook 的 alt+s 发送)
      【解决方案3】:

      请注意,某些浏览器不允许您捕获某些快捷方式! Mozilla Firefox(版本:51.0.1,Linux)中 Alt+s 快捷方式的工作示例:

      window.onkeydown = function(e){
        if(e.altKey && e.keyCode == 83){
          e.preventDefault();
          alert("Shotcut Pressed")
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-01
        • 2021-02-14
        • 2016-07-06
        • 2010-09-26
        • 1970-01-01
        • 2023-03-10
        • 2011-01-09
        • 1970-01-01
        相关资源
        最近更新 更多