我有一个 keypress
处理程序在网页上分配给body元素。 我真的希望它能在网页的任何地方活动。 或者说我是这么想的。 这个 keypress
文本输入表单中的事件也会激活body处理程序,这是有道理的,但我不希望这样。
理想的情况是,我希望保留这个 keypress
处理程序分配给body元素,并以某种方式排除输入表单。 有什么方法可以让事件停止在输入层,并防止它传播到body? (或者说这是看待HTML DOM事件的正确方式吗?)
如果简单地检查哪个元素触发了你的按键处理程序中的事件,并过滤掉输入元素,会更容易。
document.onkeypress = function(evt) {
evt = evt || window.event;
var target = evt.target || evt.srcElement;
if ( !/INPUT|TEXTAREA|SELECT|BUTTON/.test(target.nodeName) ) {
// Do stuff
}
};