我正在构建一个终端仿真器,在 Firefox 中捕获退格键时遇到了问题。我能够获取第一个退格键并删除提示符后输入的最后一个字符,但它不会持续删除多个字符。
实际网站: http://term.qt.io/ 在这里复制: http://jsfiddle.net/BgtsE/1/ JavaScript 代码
实际网站: http://term.qt.io/ 在这里复制: http://jsfiddle.net/BgtsE/1/ JavaScript 代码
function handleKeys(e){
var evt = e || window.event;
var key = evt.charCode || evt.keyCode;
if(evt.type == "keydown")
{
curr_key = key;
if(key == 8)
{
evt.preventDefault();
if(0 < $('body').text().length)
$('body').text($('body').text().slice(0,-1));
}
}
else if(evt.type == "keypress")
{
if(97 <= key && key <= 122)
{
if(curr_key != key)
$('body').append(String.fromCharCode(key));
}
else
$('body').append(String.fromCharCode(key));
}
}
$(function(){
$('html').live({
keydown:function(e){
handleKeys(e);
},
keypress:function(e){
handleKeys(e);
}
})
})
live()
在jQuery 1.7版本之后已被弃用。你应该使用bind()
或者on()
。 - BarmarsetInterval()
定期重复操作,keyup处理程序取消它。 - Barmar$('body').text($('body').text().substring(0,$('body').text().length-1));
- Zack Zatkin-Gold