在networking浏览器中,onblur和onfocusout有什么区别?

如果他们是一样的,那么为什么有这样的事件呢?

如你所知,如果该元素具有焦点,则onBlur事件会触发元素,但会失去它。

onFocusOut事件在这种情况下触发,但也触发如果任何子元素失去焦点。

例如,你有一个特殊格式的div,因为人正在编辑该区域中的一个字段。 当焦点离开div时,您可以使用onFocusOutclosures该格式。

直到最近, onFocusOut才被IE使用。 如果这一切发生了变化,那就是最近的事了。 FF,Chrome等testing

onfocusout事件是一个非标准的事件,只能在Internet Explorer中使用,而onblur事件是W3C标准的一部分,可用于每个现代浏览器。

Jquery文档有一个很好的focusoutblur演示 ,我将重现下面的清晰。 简而言之,如果演示中的select符$('p')是包含input和父元素的任何东西, focusout触发。 而blur仅在select器位于input上时触发 – $('input')

 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>focusout demo</title> <style> .inputs { float: left; margin-right: 1em; } .inputs p { margin-top: 0; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div class="inputs"> <p> <input type="text"><br> <input type="text"> </p> <p> <input type="password"> </p> </div> <div id="focus-count">focusout fire</div> <div id="blur-count">blur fire</div> <script> var focus = 0, blur = 0; $( "p" ) .focusout(function() { focus++; $( "#focus-count" ).text( "focusout fired: " + focus + "x" ); }) .blur(function() { blur++; $( "#blur-count" ).text( "blur fired: " + blur + "x" ); }); </script> </body> </html> 

2017年基本没有差别:

https://www.quirksmode.org/js/events_order.html

很less有networking开发人员有意识地使用事件捕获或冒泡。 在今天的网页中,根本没有必要让冒泡事件由几个不同的事件处理程序来处理。 用户可能会因为单击鼠标后发生的一些事情而感到困惑,并且通常希望将事件处理脚本分开。