Как перехватывать события кликов в плагине Etherpad

Я работаю над плагином etherpad, который обеспечивает специальное автозаполнение во время редактирования текста. Для этого мне нужно знать, где находится курсор пользователя. Однако я понятия не имею, перемещает ли пользователь каретку щелчком мыши, так как я не смог найти для этого подходящий хук.

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


person Gergely Borgulya    schedule 12.06.2015    source источник


Ответы (1)


Из плагина ep_tasklist — https://raw.githubusercontent.com/JohnMcLear/ep_tasklist/master/static/js/ace_inner.js с небольшими изменениями, используйте его как отправную точку для того, чего вы пытаетесь достичь.

Просто привяжите событие прослушивателя кликов к внутреннему телу документа.

exports.postAceInit = function(hook, context){
  context.ace.callWithAce(function(ace){
    var doc = ace.ace_getDocument();
    $(doc).find('#innerdocbody').on("click", underscore(SOMEFUNCTIONINCORRECTCONTEXT).bind(ace));
  }, 'myPlugin', true);
}

Я предположил, что вам также нужно сохранить контекст ace, иначе вам не нужно использовать функцию привязки подчеркивания. IE

exports.postAceInit = function(hook, context){
  context.ace.callWithAce(function(ace){
    var doc = ace.ace_getDocument();
    $(doc).find('#innerdocbody').on("click", function(){
       console.log("hello world")
    });
  }, 'myPlugin', true);
}
person John McLear    schedule 12.06.2015