为什么event.relatedTarget不能在Firefox中使用focusin / focusout事件?

时间:2013-01-31 09:24:14

标签: firefox dom event-handling focus

我需要在我的focusin函数中找到以前关注的项目。这是一个示例代码:

$('#id').on('focusin', function(event) {
  //console.log(event.relatedTarget.nodeName);    //doesn't work
}

我做了一些研究,虽然我看到有些人在帖子中说这只适用于像mousedown等鼠标事件,但我发现一些来自信誉良好的来源的文章让我相信这应该有效

  1. https://developer.mozilla.org/en-US/docs/DOM/event.relatedTarget此处Firefox 具体提到event.relatedTarget如何在'focusin'事件中返回“哪个EventTarget失去焦点”。 Firefox是我正在使用的浏览器。

  2. http://www.w3.org/TR/DOM-Level-3-Events/#events-FocusEvent在此书签中,您可以看到每个FocusEvent都有一个名为相关目标的只读属性。

  3. http://www.w3.org/TR/DOM-Level-3-Events/#event-type-focusIn这里他们特别指出'FocusEvent'有一个名为'relatedTarget'的属性,即“事件目标失去焦点(如果有的话)。”

  4. 那么我在这里做错了什么?它必定是某种愚蠢的语法错误或其他东西。我找不到event.relatedTarget的nodeName。

    更新:我可以在IE中使用它,但这在Firefox ???中无效

     $("#id").on('focusin', function(event) {
       $('#textbox').text(event.relatedTarget.nodeName);
     }
    

1 个答案:

答案 0 :(得分:9)

虽然MDN提到了focusin / focusout事件的relatedTarget,但遗憾的是,没有任何版本的FireFox支持这两个事件。 jQuery只是为你模拟它们,但由于缺乏原生支持,你不会在FF上获得相关目标。

请参阅兼容性信息herehere