无法使用 FireFox 中的事件对象访问 relatedTarget

Unable to access relatedTarget using the event object in FireFox

我正在为 YAML 使用 CodeMirror 编辑器。 我有以下代码。

$('#' + element.id).ready(function() {
  editor = CodeMirror.fromTextArea(document.getElementById(element.id), Options);
  editor.setValue(self.test());
  editor.on('blur', function(event) {
    var clickedElement = event.relatedTarget;
    var isAddDialogButtonClicked = false;
    if (clickedElement !== null) {
      isAddDialogButtonClicked = clickedElement && clickedElement.parentElement &&
        clickedElement.parentElement.id === bindingContextData.addDialogButtonId();
    }
  });
});

event.relatedTarget 在 FireFox 中不工作。它在 Chrome 中运行良好。 知道如何解决这个问题吗?

您可以使用 event.originalEvent 从 jQuerys 事件访问本机 DOM,也许您可​​以在那里找到 relatedTarget?此外,根据 MDNevent.relatedTarget 仅适用于某些事件。从 MDN 2018-12-07 复制:

The MouseEvent.relatedTarget read-only property is the secondary target for the mouse event, if there is one.

Event name     target                                           relatedTarget
focusin        The EventTarget receiving focus                  The EventTarget losing focus
focusout       The EventTarget losing focus                     The EventTarget receiving focus
mouseenter     The EventTarget the pointing device entered to   The EventTarget the pointing device exited from
mouseleave     The EventTarget the pointing device exited from  The EventTarget the pointing device entered to
mouseout       The EventTarget the pointing device exited from  The EventTarget the pointing device entered to
mouseover      The EventTarget the pointing device entered to   The EventTarget the pointing device exited from
dragenter      The EventTarget the pointing device entered to   The EventTarget the pointing device exited from
dragexit       The EventTarget the pointing device exited from  The EventTarget the pointing device entered to

For events with no secondary target, relatedTarget returns null.

里面没有 blur,但我很确定 blur 只是 focusout.

的别名

或者,直接挂钩到香草 javascript,jQuery 被高估了:

editor[0].addEventListener( 'blur', function( event ){
    // whatevs
}

editor[0] 从返回的 jQuery 对象访问本机 DOM 元素)

否则重构?

CodeMirror onBlur 事件处理程序将 'event' 作为第二个参数。 editor.on('blur', 函数(实例, 事件) {});