1

我使用以下代码(作为快捷方式)在我的反馈页面上重定向用户。

<a href='/feedback/' accesskey='f'>feedback</a>

但是此代码在 Google Chrome 中不起作用,因为当用户按下Alt + F它时,它将打开 Google Chrome 菜单栏。

如何禁用这些“快捷方式”?

它可以是 jQuery、javascript...

注意:我编写了一个重定向的 javascript 代码,但它首先打开 Chrome 菜单栏,然后​​完成它的工作。

4

5 回答 5

2

有一些特殊的键是保留的,并且Alt+F是其中之一,但它在浏览器和操作系统之间确实会有所不同。这是一个good article.

于 2013-01-01T19:41:18.050 回答
2

理论上允许这样做的浏览器会暴露一个安全漏洞。如果可以覆盖“系统”行为,则可以劫持用户浏览器。它将能够弹出一个模拟真实菜单的虚假“文件”菜单,让用户认为他们正在与自己的本地机器而不是网站进行交互。

因此,在大多数现代浏览器中这是不可能的。

于 2013-01-01T20:07:39.823 回答
2

在 Google Chrome(在 V44 中测试)中,访问accesskey键盘快捷键的修饰键是Alt.

但是,如果该键与浏览器快捷方式冲突,则使用AltShift. 因此,您发布的解决方案有效,但仅使用AltShift.

例子:

  • 第一个链接使用AltShift+f 访问(与菜单快捷方式冲突)
  • 使用 +a 访问第二个链接Alt(无冲突)

<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 使用不同的快捷方式。

于 2015-08-05T08:51:52.533 回答
1

正如其他人所说,这可能不是一个好主意。

但是如果你是一个疯子,并且你喜欢做你想做的事,那么这实际上会起作用:

document.addEventListener('keydown', (e) => {
  e.preventDefault();
  if (e.altKey) {
    console.log('yay');
  }
})

e.preventDefault()需要放置在事件处理程序的顶部。这可以防止浏览器的默认行为(即打开菜单)。

于 2020-03-18T20:03:31.240 回答
0

我刚刚找到了一种如何在用户按下时禁用浏览器功能的方法Alt + other button。Javascript 可以通过在函数末尾写入来禁用此快捷方式return false

例子

function function1(){/* code goes here */; return false}
于 2013-01-02T11:35:10.197 回答