summaryrefslogtreecommitdiffstats
path: root/src/event.js
diff options
context:
space:
mode:
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>2017-03-09 10:07:50 +0100
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>2017-03-09 10:07:50 +0100
commit761623033b6fd2af16abb2fe194f24d6e00d4024 (patch)
treec98e3d8ee18a1be207da19163c6c80b3bcaab783 /src/event.js
parent4f4f098c8026d1a42356555088eaa0b67ceabfa8 (diff)
downloadsvg.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.js30
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