我略有困惑,为什么这个代码不工作:JS触发keydown事件
$(document).keydown(function(e){
if (e.keyCode == 39) {
//RIGHT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 400;
document.getElementById('jack').style.left = new_left+'px';
}
right = true;
return false;
}
if (e.keyCode == 37) {
//LEFT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left - 4;
document.getElementById('jack').style.left = new_left+'px';
}
right = false;
return false;
}
if (e.keyCode == 38) {
//UP
return false;
}
if (e.keyCode == 40) {
//DOWN
return false;
}
if (e.keyCode == 32) {
//SPACE
if(right==true){
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 20;
document.getElementById('jack').style.left = new_left+'px';
right=false;
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
}
else{
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
}
return false;
}
});
specificly该位,不工作:
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
为什么呢?这个想法是,它应该触发右箭头键,但它不是?什么都没有发生,它要么没有触发它,要么没有正确检查keydown事件?我不知道是哪一个还是其他的东西?
我从来没有上调用的事件在Javascript中,但我会建议检查一下:http://stackoverflow.com/a/203262/947514 你可以尝试设置新闻的keyCode,但一般来说它可能无法工作,更不用说在所有浏览器中工作。 – 2012-02-22 19:34:58
按键无法正常工作,我不为什么上面的代码不起作用 – 2012-02-22 19:38:22