Я не могу получить доступ к relatedTarget, используя объект события в FireFox

Я использую редактор CodeMirror для YAML. У меня есть код ниже.

$('#' + 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. Есть идеи, как это решить?

2 ответа

Решение

Обработчик события CodeMirror onBlur принимает событие как второй параметр.editor.on ('blur', function (instance, event) {});

Вы можете получить доступ к собственному DOM из события jQuerys, используя event.originalEvent, может быть, вы можете найти связанные цели там? Также согласно MDN event.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] обращается к собственному элементу DOM из возвращенного объекта jQuery)

Иначе рефакторинг?

Другие вопросы по тегам