Firefox怪异的onblur行为(3.6.12)
检查此处的测试页面 如果我错了,请纠正我:Firefox怪异的onblur行为(3.6.12),firefox,firefox3.6,onblur,Firefox,Firefox3.6,Onblur,检查此处的测试页面 如果我错了,请纠正我: onfocus在元素获得焦点时发生 onblur当元素失去焦点时发生 在Firefox 3.6.12(在mac和windows上测试)中,使用onblur而不使用onfocus效果良好。但是,当一个输入元素同时具有onfocus和onblur元素时,它会变得很奇怪: 单击输入时,将触发onblur,而不是onfocus 就在onblur之后,onfocus立即触发 您不能在文本框中键入任何内容 其他浏览器(Safari、Opera)工作正常。这是虫子吗
onfocus
在元素获得焦点时发生onblur
当元素失去焦点时发生onblur
而不使用onfocus
效果良好。但是,当一个输入元素同时具有onfocus
和onblur
元素时,它会变得很奇怪:
onblur
,而不是onfocus
onblur
之后,onfocus
立即触发只有当
onblur
和onfocus
包含alert
时,才会发生此行为-而不是在我使用类似窗口的东西时。log
当alert框打开时,焦点从文本框中移除。请注意,“模糊”警报框在“聚焦”警报框的正上方打开(后者首先打开),因此它看起来像是在“聚焦”警报框之前触发的onblur
请看,它在调用任一事件处理程序时递增一个计数器,并在其他两个事件处理程序之后添加第二个警报框。看起来Firefox实际上在焦点处理程序的警报框打开时就开始执行模糊处理程序,尽管浏览器在概念上是单线程的。但是,当第一个(聚焦)警报框关闭时,第二个(模糊)警报框也必须在第三个(聚焦后)警报框打开之前关闭
我不知道Firefox为什么会这样。Chrome会一次又一次地启动焦点处理程序,Opera、Safari和IE会按照您期望的方式进行操作,而不会带走文本框的焦点
编辑:我已经找到并将在那里发布这个测试用例——显然它以前更糟糕。这解释了一切。那么,哪种行为是正确的呢?对我来说,狩猎和歌剧的方式似乎更符合逻辑。如果Firefox的方式是标准的,这是否意味着我们不能在onfocus中添加alert()?