【发布时间】:2015-08-15 22:22:06
【问题描述】:
我有一个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 控制台中的任何调试工具,所以我不知道发生了什么。
谁能解释发生了什么并提出解决方法?
【问题讨论】:
-
您在哪个版本的 Chrome 中发现问题?您的网络应用似乎可以使用退格键。
-
@MaximillianLaumeister:我目前使用的是 Chromium 版本 43.0.2357.130 Ubuntu 14.04。本周早些时候,我第一次在我的工作机器 Windows 7 上发现了这个问题。我不知道 Chrome 版本,但它设置为自动更新。
-
我知道的唯一技巧是在页面上选择一些东西,并确保在页面加载时它有
focus,文本框效果很好。否则,不要拿走我的退格键 -
有趣。我的Chrome版本是44.0.2403.155(64位),供参考。
-
不要
var evt- 只需使用您在函数参数中声明的evt!
标签: javascript google-chrome backspace