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
    当元素失去焦点时发生
  • 在Firefox 3.6.12(在mac和windows上测试)中,使用
    onblur
    而不使用
    onfocus
    效果良好。但是,当一个输入元素同时具有
    onfocus
    onblur
    元素时,它会变得很奇怪:

  • 单击输入时,将触发
    onblur
    ,而不是
    onfocus
  • 就在
    onblur
    之后,
    onfocus
    立即触发
  • 您不能在文本框中键入任何内容
  • 其他浏览器(Safari、Opera)工作正常。这是虫子吗?是我还是所有使用Firefox的人都经历过这种情况

    更新


    只有当
    onblur
    onfocus
    包含
    alert
    时,才会发生此行为-而不是在我使用类似
    窗口的东西时。log

    当alert框打开时,焦点从文本框中移除。请注意,“模糊”警报框在“聚焦”警报框的正上方打开(后者首先打开),因此它看起来像是在“聚焦”警报框之前触发的
    onblur

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

    我不知道Firefox为什么会这样。Chrome会一次又一次地启动焦点处理程序,Opera、Safari和IE会按照您期望的方式进行操作,而不会带走文本框的焦点


    编辑:我已经找到并将在那里发布这个测试用例——显然它以前更糟糕。

    这解释了一切。那么,哪种行为是正确的呢?对我来说,狩猎和歌剧的方式似乎更符合逻辑。如果Firefox的方式是标准的,这是否意味着我们不能在onfocus中添加alert()?