Предотвращение стандартных событий редактора среды
Как бы я заменил внутренне инициируемые события среднего редактора на мои собственные или просто изменил внутренне спроектированное поведение?
В этой иерархии
<div>
<textarea class='editable'></textarea>
</div>
Я привязываю обработчик кликов к div
и делать e.stopPropagation()
а также e.preventDefault()
,
Я также пытаюсь добавить после создания экземпляра среднего редактора.
var editor = new MediumEditor('.editable')
.subscribe("editableClick", function(e){
e.preventDefault();
});
Каждый раз, когда я пытаюсь textarea
фокусируется и курсор начинает мигать.
Например, событие intial click добавляет элемент в dom с классом .medium-editor-element
я должен нырнуть в источник, чтобы изменить это поведение?
Или, может быть, я бы хотел, чтобы он работал не с щелчком, а с двойным щелчком.
Кто-нибудь знаком с внутренней работой среднего редактора?
1 ответ
После проб и ошибок и помощи инструментов разработчика я нашел способ делать то, что я хочу. Но я думаю, что этот вопрос все еще отвечает, потому что я сделал это, изменив источник medium-editor
,
Итак, в medium-editor.js
в строке 2725 есть setupListener
функция.
Есть 3 основных события case 'externalInteraction':
2731-я строка.
mousedown
,click
,focus
,
Начиная с 2959-й строки, есть прикрепленные обработчики для этих событий.
handleBodyClick
,handleBodyFocus
,handleBodyMousedown
mousedown
важно для моего случая, потому что это первый, который срабатывает и должен быть предотвращен и принят в разных случаях.
В конце я добавил dblclick
а также handleBodyDblClick
к источнику, то положить некоторую логику в handleBodyMousedown
чтобы предотвратить поведение по умолчанию mousedown
событие в некоторых случаях.
Во всяком случае, из источника, как я понимаю, нет методов переопределения или перехватчиков для изменения medium-editor
внутренние события.
Было бы неплохо иметь эту функцию. Или, если я ошибаюсь, я хотел бы знать, есть ли лучший способ сделать все это.