contenteditable
如果你正在做一些事情(比如让用户在他们想要在页面上的任何 divs/spans/boxes 中写入文本),这有点棘手。
如果是这样,这将需要一些思考和修改(这并不难- 只是更多的参与)。
但是,您可以根据要排除的类型列表检查event.target
(事件发生的元素)的属性。tagName
function keyEvent (evt) {
var key = evt.keyCode,
el = evt.target,
type = el.tagName.toLowerCase();
// tag names are upper-case... almost always...
// so convert one way or the other, to be sure
if (type === "input" || type === "textarea") { return; }
/* do whatever you were going to do */
}
还应该注意的是,这个解决方案(以及到目前为止的代码)与 ghetto-IE 不兼容。为此,您需要使用attachEvent
andwindow.event
和window.event.srcElement
属性,因为它们不支持addEventListener
和e
/event
函数参数。