Javascript:全球元素焦点监听器

我正在尝试设置一个侦听所有焦点事件的侦听器.特别是我试图在输入或文本框获得焦点的任何时候倾听.根据一些研究,广泛接受的实现方法是这样的:
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

解决方法

由于某些事件(焦点,模糊,变化)没有冒泡,我建议您尝试事件捕获.首先onfocus不适用于此,所以你必须使用addEventListener,你可以在第三个参数中指定使用的委托模式.查看 MDN以了解addEventListener的用法.
有关委派焦点事件的更多信息,请查看此 article.

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ "TOC" 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...