html 如何在JavaScript中拦截链接上的回车键?

guykilcj  于 2023-01-03  发布在  Java
关注(0)|答案(1)|浏览(153)

有没有办法在不使用Bookmarklet(href="javascript:...")的情况下拦截链接上的Enter键?
我在试这个:

addEventListener('keypress', (e) => {
  console.log(e);
  if (e.charCode == 13) {
    alert('x');
  }
});
<a href="#">this is link</a>

如果你按下tab键并输入代码,代码不会被触发。只有当链接不在焦点上时,警报才会被触发。有没有一种方法可以在链接上按下enter键时触发JavaScript?或者href是唯一的方法?应该有一种方法可以使用JavaScript,而不必将JavaScript放入页面上的每个链接中。
如果你问我为什么需要这个,那是因为这个问题:how to open a file upload dialog box when a hyperlink is clicked,我想更新我的答案,看看我是否可以触发点击input[type="file"]当你按回车键。

wztqucjr

wztqucjr1#

如果希望处理程序仅在链接获得焦点时触发,请将侦听器添加到元素本身。
若要实现更一致的键盘事件处理,请侦听keydown而不是keypresswhich has been deprecated
要拦截enter打开链接的缺省操作,请使用event.preventDefault()
最后,避免使用字符码或键码,而是使用key,这在不同的键盘布局中更一致。

link.addEventListener('keydown', (e) => {
  const { key } = e
  console.log(key);
  if (key === 'Enter') {
    e.preventDefault();
    alert('You just tried opening Google');
  }
});
<a id="link" href="https://www.google.com">Google</a>

相关问题