参见代码:
area.onkeydown = function(e){
e = e || window.event;
if(e.shiftKey && e.keyCode === 32){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
// no alert here
return false;
}
};
此处代码有效,按 Shift + Space 时,空格不会插入。但是,一旦插入alert
,它就无法工作,即插入空格并且警告框也不会显示。
area.onkeydown = function(e){
e = e || window.event;
if(e.shiftKey && e.keyCode === 32){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
alert("typed"); // this alert doesn't show
return false; // and space also gets insrted
}
};
我错过了什么?
更新
onkeyup
会显示提醒,但会插入一个空格。onkeypress
不会插入空格,但只要按键仍然按下,警报就会保留。所以,我想我没办法让这个工作。正如Teemu puts it:
在您的小提琴中,无论是否在{1}}中都可以使用,而无需在IE11(Win7)中打印空格。虽然我可以看到警报,但FF会丢失
alert()
行为。在Chrome35中,警报仅在屏幕上闪烁并打印空间。 (如果闪存足够快,你的情况呢?) IE使用操作系统窗口显示警报,其他浏览器有自己的实现,这似乎搞乱了事件处理。
更新:我投票决定将这个问题视为偏离主题,因为在最新的Chrome版本中,问题无法再按照其描述的方式再现。按Shift + Space现在显示警告框,但不插入任何空格。
答案 0 :(得分:2)
答案 1 :(得分:2)
尝试使用onkeypress
代替onkeydown
答案 2 :(得分:1)