javascript - 需要调试帮助 : Prevent backspace from navigating back

标签 javascript google-chrome backspace

我有一个webapp它使用退格键来达到自己的目的。我长期以来一直在 document.keyup 上调用以下函数,该函数多年来一直没有问题:

function keyupKeys (evt) {
  if(this.activeElement.id == 'q') return true; //ignore input to the search box
  if(!evt) var evt = window.event;
  var code = evt.keyCode;

  //handle special keys:
  switch(code) {
    case  9: // tab
    case 39: // right arrow
      press('colon'); break;
    case 37: // left arrow
      press('colon');
      press('colon'); break;
    case 13: // enter
      press('eq'); break;
    case  8: // backspace
      press('bs'); break;
    case 46: // delete
    case 144:// numpad clear
      press('c'); break;
    case 27: // esc
      press('ac'); break;
    default: // Not a key this function handles
      return true;
  }
  return false;
};

最近,我发现 Windows 中的 Chrome 和 Linux 上的 Chromium 在按下退格键时开始向后导航。过去并非如此。我还没有测试过其他浏览器。

关于SO的相关问题促使我修改退格键的大小写:

case  8: // backspace
  if(evt.preventDefault) evt.preventDefault();
  press('bs'); break;

然而,这一改变并没有产生任何效果。此外,由于浏览器正在向后导航,我无法使用 Javascript 控制台中的任何调试工具,因此我不知道发生了什么。

谁能解释一下发生了什么并提出解决方法?

最佳答案

您应该监听 keydown 事件,而不是 keyup 事件。

关于javascript - 需要调试帮助 : Prevent backspace from navigating back,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32029974/

相关文章:

javascript - 获取错误 'Cannot read property ' getAttribute' of undefined'

javascript setTimeout 无法识别函数参数

c# - 使用退格符附加字符串时从文本文件中删除字符

JavaScript 用退格键连接字符串

JavaScript:在放置之前检查 <div> 对象的宽度

javascript - JS获取文件内容?

javascript - Extjs 模型加载出现错误 "Invalid record id returned for",但仅在从全局 Controller 触发时出现

javascript - 需要 jQuery 到 Tampermonkey 脚本和控制台中的安全变量

google-chrome - 有没有办法在chrome扩展中使用c++?

c - 如何在 C 中进行退格处理