我正在尝试设置一个监听器,以便监听所有的焦点事件。特别是,我正在尝试监听任何输入框或文本框获得焦点的时刻。根据一些研究,广泛接受的方法是这样的:
document.body.onfocus = function(event) {
//Check the event.target for input/textbox
//Do something
};
但是 document.body.onfocus 似乎从来没有触发过。我认为可能是因为文档实际上从来没有获得焦点,所以我尝试了:
document.body.focus();
最初“设置”焦点,但这也不起作用。
有没有想法可以在所有输入框/文本框上侦听焦点事件,而不必直接在元素本身上设置事件?请使用原生JavaScript,不要使用框架。
根据接受的答案,这里是一些可工作的代码:
var focusHandler = function(event) {
var type = event.target.nodeName.toLowerCase();
if(type == 'input' || type == 'textarea') {
//Do something
}
};
document.body.addEventListener('focus', focusHandler, true); //Non-IE
document.body.onfocusin = focusHandler; //IE
<head>
标签中吗?还是在<body>
标签中?我认为当在<head>
标签中运行代码时,document.body
将不可用...虽然不确定。 - Ian