Я не могу получить доступ к 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)
Иначе рефакторинг?