点击此处的测试页 http://rickchristie.com/testfocus.html
如果我错了,请纠正我:
onfocus
在元素获得焦点时发生。onblur
在元素失去焦点时发生。在Firefox 3.6.12(在Mac和Windows上测试)中,使用不onblur
的{{1}}工作正常。但是,当输入元素具有 onfocus
和onfocus
元素时,它会变得奇怪:
onblur
会被触发而不是onblur
。onfocus
之后,onblur
立即开火。其他浏览器(Safari,Opera)按预期工作。这是一个错误吗?是仅仅是我还是每个人都在使用Firefox体验这个?
更新
这种行为似乎只有在onfocus
和onblur
包含onfocus
时才会发生 - 而不是在我使用alert
之类的时候。
答案 0 :(得分:1)
当警告框打开时,焦点将从文本框中删除。请注意,“BLUR”警告框会在“FOCUS”警告框(后者首先打开)的顶部打开,这就是为什么在onblur
之前看起来onfocus
被触发的原因。
查看my test page,它在调用任一事件处理程序时递增计数器,并在其他两个警报框之后添加第二个警告框。一旦焦点处理程序的警告框打开,Firefox似乎实际上开始执行模糊处理程序,尽管浏览器的概念性单线程模型。但是,当第一个(焦点)警告框关闭时,第二个(模糊)警告框也必须在第三个(焦点后)警告框打开之前关闭。
我不知道Firefox为什么会这样做。 Chrome一次又一次地启动焦点处理程序,Opera,Safari和IE按照您的预期方式执行操作 - 不会删除文本框的焦点。
编辑:我发现https://bugzilla.mozilla.org/show_bug.cgi?id=31889并将在那里发布此测试用例 - 显然它曾经更糟糕。