Javascript 在Google Chrome中禁用Alt功能(快捷方式)

Javascript 在Google Chrome中禁用Alt功能(快捷方式),javascript,jquery,html,google-chrome,keyboard-shortcuts,Javascript,Jquery,Html,Google Chrome,Keyboard Shortcuts,我使用以下代码(作为快捷方式)在我的反馈页面上重定向用户 <a href='/feedback/' accesskey='f'>feedback</a> 但这段代码在Google Chrome中不起作用,因为当用户按下Alt+F时,它将打开Google Chrome菜单栏 如何禁用这些“快捷方式” 它可以是jQuery、javascript 注意:我编写了一个重定向的javascript代码,但它首先打开Chrome菜单栏,然后执行其工作。保留了某些特殊的键,Alt

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

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

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

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

它可以是jQuery、javascript


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

保留了某些特殊的键,Alt+F就是其中之一,但在浏览器和操作系统之间确实会有所不同。这里有一个。

保留了某些特殊键,Alt+F就是其中之一,但在浏览器和操作系统之间确实会有所不同。这里有一个。

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


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

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


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

我刚刚找到了一种方法,当用户按下Alt+other按钮时,如何禁用浏览器功能。Javascript可以通过在函数
return false

范例

function function1(){/* code goes here */; return false}

我刚刚找到一种方法,当用户按下Alt+other按钮时,如何禁用浏览器功能。Javascript可以通过在函数
return false

范例

function function1(){/* code goes here */; return false}
在Google Chrome(在V44中测试)中,访问
accesskey
键盘快捷键的修改键为Alt

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

例如:

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

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

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

例如:

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


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

但如果你是一个疯子,你喜欢做你想做的事,这实际上是可行的:

document.addEventListener('keydown',(e)=>{
e、 预防默认值();
如果(如altKey){
console.log('yay');
}
})

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

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

但如果你是一个疯子,你喜欢做你想做的事,这实际上是可行的:

document.addEventListener('keydown',(e)=>{
e、 预防默认值();
如果(如altKey){
console.log('yay');
}
})

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

Oh wow。我从未意识到Alt+Shift+(键)不是accesskeys的主要方法。因为他们在所有的AccessKey上都标有[alt shift-(key)],而不考虑潜在的冲突。alt+shift+F在Chrome for Linux、Ubuntu 18.04.1 LTS中是不起作用的。“这个问题没有解决办法。”WoodrowShigeru:奇怪。我刚刚在Debian上用Chrome65进行了测试,Alt+Shift+F在上面的测试用例中对我有效。我有Chrome71,但这个测试用例不起作用。也许这是谷歌开发人员添加的一个bug。@WoodrowShigeru:刚刚用Chrome71重新测试过——对我来说仍然有效。不过请注意,键盘焦点处理似乎存在一些问题。我必须点击示例页面,例如标题上的,才能使用快捷键。此外,如果使用Alt-F触发菜单,则需要再次单击以更正键盘焦点。也许这就是你的问题所在?如果没有,请随意问一个新问题:-)。哦,哇。我从未意识到Alt+Shift+(键)不是accesskeys的主要方法。因为他们在所有的AccessKey上都标有[alt shift-(key)],而不考虑潜在的冲突。alt+shift+F在Chrome for Linux、Ubuntu 18.04.1 LTS中是不起作用的。“这个问题没有解决办法。”WoodrowShigeru:奇怪。我刚刚在Debian上用Chrome65进行了测试,Alt+Shift+F在上面的测试用例中对我有效。我有Chrome71,但这个测试用例不起作用。也许这是谷歌开发人员添加的一个bug。@WoodrowShigeru:刚刚用Chrome71重新测试过——对我来说仍然有效。不过请注意,键盘焦点处理似乎存在一些问题。我必须点击示例页面,例如标题上的,才能使用快捷键。此外,如果使用Alt-F触发菜单,则需要再次单击以更正键盘焦点。也许这就是你的问题所在?如果没有,请随便问一个新问题:-)你能举个例子吗