onblur事件在元素是去焦点的时候被触发,常用与文字输入框,判断鼠标是否已经离开输入框,但是onblur并不支持事件冒泡,所以无法判断是否有子元素发生onblur事件。解决方法有两种:
1.用onfocusout事件代替,onfocusout事件的和onblur的作用是一样的,只不过onfocusout支持事件冒泡,但是需要注意的是,onfocusout在chrome,safari 和opera 15+中element.onfocusout的写法可能会有兼容性的问题,这种写法下并不会触发onfocusout事件。解决办法是在html元素中使用属性添加onfocusout事件或者是调用addEventListener()。
<element onfoucusot="myScript">
或者
element.addEventListener("focusout", myScript);
2.用addEventListener()方法将useCapture参数设置为true,既然onblur事件不支持冒泡,那么我们可以在事件捕获的阶段执行onblur。
element.addEventListener("blur", myScript, true);
addEventListener()的最后一个参数默认为false,表示事件是在冒泡阶段执行的,当设置为true时,代表事件是在捕获阶段执行的。