Firefox奇怪的onblur行为(3.6.12)

时间:2010-11-21 04:42:27

标签: firefox firefox3.6 onblur

点击此处的测试页 http://rickchristie.com/testfocus.html

如果我错了,请纠正我:

  1. onfocus在元素获得焦点时发生。
  2. onblur在元素失去焦点时发生。
  3. 在Firefox 3.6.12(在Mac和Windows上测试)中,使用不onblur的{​​{1}}工作正常。但是,当输入元素具有 onfocusonfocus元素时,它会变得奇怪:

    1. 当您点击输入时,onblur会被触发而不是onblur
    2. onfocus之后,onblur立即开火。
    3. 您无法在文本框中输入任何内容。
    4. 其他浏览器(Safari,Opera)按预期工作。这是一个错误吗?是仅仅是我还是每个人都在使用Firefox体验这个?

      更新

      这种行为似乎只有在onfocusonblur包含onfocus时才会发生 - 而不是在我使用alert之类的时候。

1 个答案:

答案 0 :(得分:1)

当警告框打开时,焦点将从文本框中删除。请注意,“BLUR”警告框会在“FOCUS”警告框(后者首先打开)的顶部打开,这就是为什么在onblur之前看起来onfocus被触发的原因。

查看my test page,它在调用任一事件处理程序时递增计数器,并在其他两个警报框之后添加第二个警告框。一旦焦点处理程序的警告框打开,Firefox似乎实际上开始执行模糊处理程序,尽管浏览器的概念性单线程模型。但是,当第一个(焦点)警告框关闭时,第二个(模糊)警告框也必须在第三个(焦点后)警告框打开之前关闭。

我不知道Firefox为什么会这样做。 Chrome一次又一次地启动焦点处理程序,Opera,Safari和IE按照您的预期方式执行操作 - 不会删除文本框的焦点。

编辑:我发现https://bugzilla.mozilla.org/show_bug.cgi?id=31889并将在那里发布此测试用例 - 显然它曾经更糟糕。