90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
//>>built
|
|
define("dojo/touch", ["./_base/kernel", "./on", "./has", "./mouse"], function(dojo, on, has, mouse){
|
|
// module:
|
|
// dojo/touch
|
|
|
|
/*=====
|
|
dojo.touch = {
|
|
// summary:
|
|
// This module provides unified touch event handlers by exporting
|
|
// press, move, release and cancel which can also run well on desktop.
|
|
// Based on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html
|
|
//
|
|
// example:
|
|
// 1. Used with dojo.connect()
|
|
// | dojo.connect(node, dojo.touch.press, function(e){});
|
|
// | dojo.connect(node, dojo.touch.move, function(e){});
|
|
// | dojo.connect(node, dojo.touch.release, function(e){});
|
|
// | dojo.connect(node, dojo.touch.cancel, function(e){});
|
|
//
|
|
// 2. Used with dojo.on
|
|
// | define(["dojo/on", "dojo/touch"], function(on, touch){
|
|
// | on(node, touch.press, function(e){});
|
|
// | on(node, touch.move, function(e){});
|
|
// | on(node, touch.release, function(e){});
|
|
// | on(node, touch.cancel, function(e){});
|
|
//
|
|
// 3. Used with dojo.touch.* directly
|
|
// | dojo.touch.press(node, function(e){});
|
|
// | dojo.touch.move(node, function(e){});
|
|
// | dojo.touch.release(node, function(e){});
|
|
// | dojo.touch.cancel(node, function(e){});
|
|
|
|
press: function(node, listener){
|
|
// summary:
|
|
// Register a listener to 'touchstart'|'mousedown' for the given node
|
|
// node: Dom
|
|
// Target node to listen to
|
|
// listener: Function
|
|
// Callback function
|
|
// returns:
|
|
// A handle which will be used to remove the listener by handle.remove()
|
|
},
|
|
move: function(node, listener){
|
|
// summary:
|
|
// Register a listener to 'touchmove'|'mousemove' for the given node
|
|
// node: Dom
|
|
// Target node to listen to
|
|
// listener: Function
|
|
// Callback function
|
|
// returns:
|
|
// A handle which will be used to remove the listener by handle.remove()
|
|
},
|
|
release: function(node, listener){
|
|
// summary:
|
|
// Register a listener to 'touchend'|'mouseup' for the given node
|
|
// node: Dom
|
|
// Target node to listen to
|
|
// listener: Function
|
|
// Callback function
|
|
// returns:
|
|
// A handle which will be used to remove the listener by handle.remove()
|
|
},
|
|
cancel: function(node, listener){
|
|
// summary:
|
|
// Register a listener to 'touchcancel'|'mouseleave' for the given node
|
|
// node: Dom
|
|
// Target node to listen to
|
|
// listener: Function
|
|
// Callback function
|
|
// returns:
|
|
// A handle which will be used to remove the listener by handle.remove()
|
|
}
|
|
};
|
|
=====*/
|
|
|
|
function _handle(/*String - press | move | release | cancel*/type){
|
|
return function(node, listener){//called by on(), see dojo.on
|
|
return on(node, type, listener);
|
|
};
|
|
}
|
|
var touch = has("touch");
|
|
//device neutral events - dojo.touch.press|move|release|cancel
|
|
dojo.touch = {
|
|
press: _handle(touch ? "touchstart": "mousedown"),
|
|
move: _handle(touch ? "touchmove": "mousemove"),
|
|
release: _handle(touch ? "touchend": "mouseup"),
|
|
cancel: touch ? _handle("touchcancel") : mouse.leave
|
|
};
|
|
return dojo.touch;
|
|
}); |