我使用以下代码(作为快捷方式)在我的反馈页面上重定向用户。
<a href='/feedback/' accesskey='f'>feedback</a>
但是此代码在 Google Chrome 中不起作用,因为当用户按下Alt + F它时,它将打开 Google Chrome 菜单栏。
如何禁用这些“快捷方式”?
它可以是 jQuery、javascript...
注意:我编写了一个重定向的 javascript 代码,但它首先打开 Chrome 菜单栏,然后完成它的工作。
我使用以下代码(作为快捷方式)在我的反馈页面上重定向用户。
<a href='/feedback/' accesskey='f'>feedback</a>
但是此代码在 Google Chrome 中不起作用,因为当用户按下Alt + F它时,它将打开 Google Chrome 菜单栏。
如何禁用这些“快捷方式”?
它可以是 jQuery、javascript...
注意:我编写了一个重定向的 javascript 代码,但它首先打开 Chrome 菜单栏,然后完成它的工作。
有一些特殊的键是保留的,并且Alt+F是其中之一,但它在浏览器和操作系统之间确实会有所不同。这是一个good article.
理论上允许这样做的浏览器会暴露一个安全漏洞。如果可以覆盖“系统”行为,则可以劫持用户浏览器。它将能够弹出一个模拟真实菜单的虚假“文件”菜单,让用户认为他们正在与自己的本地机器而不是网站进行交互。
因此,在大多数现代浏览器中这是不可能的。
在 Google Chrome(在 V44 中测试)中,访问accesskey键盘快捷键的修饰键是Alt.
但是,如果该键与浏览器快捷方式冲突,则使用AltShift. 因此,您发布的解决方案有效,但仅使用AltShift.
例子:
<h1>Links with accesskey attribute</h1>
<a href='http://www.example.org/' accesskey='f'>
Link to www.example.org (accesskey: f)
</a>
<p/>
<a href='http://apache.org/' accesskey='a'>
Link to apache.org (accesskey: a)
</a>
顺便说一句,我更喜欢 Firefox 使用的解决方案,即始终AltShift用于这些快捷方式。这对用户来说比 Chrome 的行为更一致(尽管 Chome 开发者可能有他们的理由)。
注意:以上内容在 Windows 和 Linux 上有效。AFAIK,Mac OS X 上的 Chrome 使用不同的快捷方式。
正如其他人所说,这可能不是一个好主意。
但是如果你是一个疯子,并且你喜欢做你想做的事,那么这实际上会起作用:
document.addEventListener('keydown', (e) => {
e.preventDefault();
if (e.altKey) {
console.log('yay');
}
})
e.preventDefault()需要放置在事件处理程序的顶部。这可以防止浏览器的默认行为(即打开菜单)。
我刚刚找到了一种如何在用户按下时禁用浏览器功能的方法Alt + other button。Javascript 可以通过在函数末尾写入来禁用此快捷方式return false
例子
function function1(){/* code goes here */; return false}