在Firefox

时间:2017-02-07 10:15:46

标签: javascript html firefox keyboard-shortcuts menubar

我正在一个网站上工作,每个网页都有按钮,例如"提交"和"取消"。每个按钮都有accesskey属性。提交按钮的accesskey属性设置为S,取消按钮的accesskey属性设置为C

使用不同浏览器中的不同修饰符激活访问键。 Internet Explorer,Safari和Google Chrome仅使用 alt ,而Firefox同时使用 alt shift 键。同样,Firefox使用 alt + s 打开历史记录菜单。

此问题的答案不应建议更改浏览器配置中的设置,因为这在生产站点上是不可行的。

我如何将Firefox用于accesskey的修改键更改为 alt ,并阻止历史记录菜单打开?

我在Ubuntu 16.04工作。

2 个答案:

答案 0 :(得分:6)

我不能 - 据我所知 - 更改激活accesskey所需的组合键,但您尝试实现的目标不需要使用accesskey属性。您可以直接收听keydown事件。

向文档添加keydown事件侦听器。在处理程序功能中检查是否按下了alt和s键。如果它们是 - 并且没有按下其他修饰键 - 阻止事件的默认操作,则在提交按钮上触发单击事件。触发提交按钮上的单击事件将依次触发提交事件侦听器,而{{{ 3}}

const submit = document.querySelector('#submit')

document.addEventListener('keydown', e => {
  // If the only modifier key is the alt key, and the s key is pressed
  if(!e.metaKey && !e.ctrlKey && !e.shiftKey && e.altKey && e.key === 's') {
    e.preventDefault()  // Prevent the mozilla history menu from opening
    submit.click()      // Trigger the form submission
  }
})
<form action=""><button type="submit" id="submit"><u>S</u>ubmit</button></form>

<子> 备注
<子> 1。虽然这适用于当前稳定版的Firefox,但我还没有测试过其他版本
<子> 2。此示例使用2015版triggering the submit event on the form directly may not.中引入的语言功能。这些功能不是实现所需效果所必需的,但使代码更易于阅读。如果您需要支持旧版浏览器,则可以使用var代替const,使用标准函数代替胖箭头函数。
<子> 3。不幸的是 - 由于沙盒 - Stack Overflow片段功能不适用于此示例,请参阅此The ECMAScript Language Specification而不是

答案 1 :(得分:-1)

如果您想深入了解它,请尝试本文有更多信息:http://kb.mozillazine.org/Ui.key.contentAccess

如果您发现无法习惯“标签内”首选项对话框,则首选返回旧样式对话框:

  1. 在新标签中,在地址栏中键入或粘贴about:config 按Enter键。点击按钮,小心谨慎。

  2. 在列表上方的搜索框中,键入或粘贴pref并暂停 列表已过滤

  3. 双击要切换的browser.preferences.inContent首选项 它从真实到虚假

  4. 注意:我不知道这是永远存在于Firefox中还是过渡功能。