我正在一个网站上工作,每个网页都有按钮,例如"提交"和"取消"。每个按钮都有accesskey
属性。提交按钮的accesskey
属性设置为S
,取消按钮的accesskey
属性设置为C
。
使用不同浏览器中的不同修饰符激活访问键。 Internet Explorer,Safari和Google Chrome仅使用 alt ,而Firefox同时使用 alt 和 shift 键。同样,Firefox使用 alt + s 打开历史记录菜单。
此问题的答案不应建议更改浏览器配置中的设置,因为这在生产站点上是不可行的。
我如何将Firefox用于accesskey
的修改键更改为 alt ,并阻止历史记录菜单打开?
我在Ubuntu 16.04工作。
答案 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
如果您发现无法习惯“标签内”首选项对话框,则首选返回旧样式对话框:
在新标签中,在地址栏中键入或粘贴about:config 按Enter键。点击按钮,小心谨慎。
在列表上方的搜索框中,键入或粘贴pref并暂停 列表已过滤
双击要切换的browser.preferences.inContent首选项 它从真实到虚假
注意:我不知道这是永远存在于Firefox中还是过渡功能。