【发布时间】:2015-02-06 04:15:40
【问题描述】:
我正在构建一个终端仿真,但遇到了在 Firefox 中捕获退格键的问题。我可以在提示符下获取第一个退格并删除输入中的最后一个字符,但它不会持续存在并删除多个字符。
实际网址: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()。 -
你的小提琴适合我。退格是否自动重复可能取决于操作系统或浏览器。我正在使用 OS X Snow Leopard 和 Chrome 24。
-
在 Windows 17.0.1 上使用 Firefox 切片中的一些错误。我将在“答案”中发布更多详细信息,但这似乎是某种错误
-
@Barmar:是的,这是 Firefox 特有的 错误。
-
解决方法是实现您自己的自动重复。 keydown 处理程序调用
setInterval()定期重复操作,keyup 处理程序取消它。
标签: javascript jquery events firefox keydown