2014-09-09 7 views
2

Я внедряю ZeroClipboard в приложение, и я попал в заблуждение, чтобы регистрировать события мыши. Детали следующим образом:ZeroClipboard - события мыши не срабатывают

Я реализовал это в целях Backbone с CoffeeScript так:

initialize: -> 
    # ZeroClipboard Setup 
    client = new ZeroClipboard(@$el) 

    # Ready 
    client.on "ready", (event) -> 
    console.log('ZeroClipboard Ready.') 

    # Before Copy 
    client.on "beforecopy", (event) -> 
    console.log('Before Copy') 

    # Copy-To-Clipboard Action 
    client.on "copy", (event) -> 
    console.log('Copied') 
    clipboard = event.clipboardData 
    clipboard.setData "text/plain", value 

    # After Copy Action 
    client.on "aftercopy", (event) => 
    console.log('AfterCopy') 
    @showTooltip() 

Все выше код работает. Файл SWF успешно найден и ready, beforecopy, copy и aftercopy события работают красиво. Я вижу все ожидаемые записи в консоли.

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

client.on "mouseenter", (event) -> 
    console.log('MouseOver') 

# # # # # # # # # # 

client.on "mouseover", (event) -> 
    console.log('MouseOver') 

# # # # # # # # # # 

client.on "mousedown", (event) -> 
    console.log('MouseOver') 

Я не могу получить столько, сколько console.log из любого из этих событий. Других ошибок JS нет, и, судя по всему, ZeroClipboard работает достаточно хорошо.

Я безуспешно пытался добавить прослушиватель события, как так:

client.addEventListener "mouseover", (event) => 
    console.log('HoverState') 

Это не кажется, что он будет работать, потому что клиент является объектом ZeroClipboard и «addEventListener» не является функцией-членом его класс.

Я запустил в файл ZeroClipboard.js и добавил некоторые операторы console.log(), в которых событие стрельбы по стрелке должно запускаться, и они успешно выводятся. Таким образом, я могу (в основном) исключить, что это проблема в реализации события ZeroClipboard и делает вывод, что это почти что-то не так с моим кодом, хотя, проведя большую часть дневного слежки, я пришел с пустыми руками в отношении жизнеспособного решения ,

Если кто-то может угодить рукой, я был бы очень благодарен - спасибо заранее!

ответ

2

я мог бы быть неправильное ZeroClipboard doc о событиях, но, насколько я могу сказать, что это испускает только ready/beforecopy/copy/aftercopy/destroy/error события, но это не распространяется DOM события:

Стандартные события мыши даже распространяются на ваш элемент DOM, поэтому вы все равно можете иметь эффект опрокидывания и mousedown.

Это означает, что вы можете использовать вас DOM узел, как и в любой другой точки зрения Backbone и, например, объявить хэш событий (JS пример):

var ZCView = Backbone.View.extend({ 
    events: { 
     'mouseenter': function() { 
      console.log('mouseenter'); 
     }, 
     'mouseover': function() { 
      console.log('mouseover'); 
     } 
    }, 
    initialize: function() { 
     var client = new ZeroClipboard(this.el); 

     client.on("ready", function() { 
      console.log('ready'); 
     }); 
     client.on("beforecopy", function() { 
      console.log('beforecopy'); 
     }); 
    } 
}); 

и демо http://jsfiddle.net/sn1ccpqw/

+0

Отлично! Решение и демонстрация превосходны и понятны. Большое спасибо за помощь и исправления :) – aeksco

Смежные вопросы