Добавьте событие ondblClick и click в Codemirror.

Я хотел бы добавить событие onDblClick в codemirror 2. Я обнаружил, что onCursorActivity не доставляет событие, поэтому я не могу использовать этот метод для фильтрации событий. Как я могу реализовать событие onDbClick на Codemirror?

Заранее спасибо.


person alpha2011    schedule 17.10.2011    source источник


Ответы (3)


Вы можете вызвать метод on для объекта, возвращаемого CodeMirror:

var cm = CodeMirror.fromTextArea(document.querySelector('textarea'));
cm.on('dblclick', function() {
   alert('You double click the editor');
});

Вы можете найти список всех доступных событий в документации.

person jcubic    schedule 05.12.2013

Зарегистрируйте обработчик элемента, возвращаемого методом getWrapperElement(). Если вы не хотите не только обнаруживать двойные щелчки, но и предотвращать появление значения по умолчанию (выберите слово под курсором мыши)... в этом случае, я думаю, необходима некоторая модификация основного кода.

person Marijn    schedule 19.10.2011
comment
Вау, рад получить ответ от тебя, Марин. Да, я хочу предотвратить значение по умолчанию (выбрать слово под курсором мыши) и запускать только двойные щелчки. Пока я просто пробую то, что вы сказали, и это не зажигается все время. Я добавил идентификатор в оболочку и использовал выбор jquery, чтобы получить редактор, и я подписался на событие dblclick в редакторе. Есть ли что-то, что я делаю неправильно? Почему срабатывает иногда, а не всегда? заранее спасибо - person alpha2011; 19.10.2011

http://jsfiddle.net/yusafkhaliq/NZF53/1/

Поскольку codemirror отображает внутри указанного элемента, вы можете добавить событие ondblclick к элементу, как показано ниже, маркер отображает без номеров строк после двойного щелчка, что определенные элементы будут отображать номера строк

var codeelems = document.getElementsByClassName("code");
for (i = 0; i < codeelems.length; i++) {
    (function ($this) {
        var value = $this.innerHTML;
        $this.innerHTML = "";            
        var editor = CodeMirror($this, {
            value: value,
            mode: "text/javascript",
            lineNumbers: false
        });
        $this.ondblclick = function () {
            editor.setOption("lineNumbers", true);
        }
    })(codeelems[i]);
}
person Yusaf Khaliq    schedule 20.02.2013