diff options
author | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2017-03-09 10:07:50 +0100 |
---|---|---|
committer | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2017-03-09 10:07:50 +0100 |
commit | 761623033b6fd2af16abb2fe194f24d6e00d4024 (patch) | |
tree | c98e3d8ee18a1be207da19163c6c80b3bcaab783 /src/event.js | |
parent | 4f4f098c8026d1a42356555088eaa0b67ceabfa8 (diff) | |
download | svg.js-761623033b6fd2af16abb2fe194f24d6e00d4024.tar.gz svg.js-761623033b6fd2af16abb2fe194f24d6e00d4024.zip |
make events cancelable by default (#550) - version 5
Diffstat (limited to 'src/event.js')
-rw-r--r-- | src/event.js | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/event.js b/src/event.js index 49a8d8d..32c2cc6 100644 --- a/src/event.js +++ b/src/event.js @@ -13,18 +13,18 @@ , 'touchleave' , 'touchend' , 'touchcancel' ].forEach(function(event) { - - // add event to SVG.Element + + // add event to SVG.Element SVG.Element.prototype[event] = function(f) { var self = this - - // bind event to element rather than element node + + // bind event to element rather than element node this.node['on' + event] = typeof f == 'function' ? function() { return f.apply(self, arguments) } : null - + return this } - + }) // Initialize listeners stack @@ -39,8 +39,8 @@ SVG.on = function(node, event, listener, binding) { , index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1 , ev = event.split('.')[0] , ns = event.split('.')[1] || '*' - - + + // ensure valid object SVG.listeners[index] = SVG.listeners[index] || {} SVG.listeners[index][ev] = SVG.listeners[index][ev] || {} @@ -48,7 +48,7 @@ SVG.on = function(node, event, listener, binding) { if(!listener._svgjsListenerId) listener._svgjsListenerId = ++SVG.listenerId - + // reference listener SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l @@ -120,25 +120,29 @@ SVG.extend(SVG.Element, { // Bind given event to listener on: function(event, listener, binding) { SVG.on(this.node, event, listener, binding) - + return this } // Unbind event from listener , off: function(event, listener) { SVG.off(this.node, event, listener) - + return this } // Fire given event , fire: function(event, data) { - + // Dispatch event if(event instanceof Event){ this.node.dispatchEvent(event) }else{ - this.node.dispatchEvent(new CustomEvent(event, {detail:data})) + this.node.dispatchEvent(event = new CustomEvent(event, {detail:data, cancelable: true})) } + this._event = event return this } +, event: function() { + return this._event + } })
\ No newline at end of file |