| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- define("dijit/_OnDijitClickMixin", [
- "dojo/on",
- "dojo/_base/array",
- "dojo/keys",
- "dojo/_base/declare",
- "dojo/_base/sniff",
- "dojo/_base/unload",
- "dojo/_base/window"
- ], function(on, array, keys, declare, has, unload, win){
-
-
-
-
-
-
-
-
-
-
-
- var lastKeyDownNode = null;
- if(has("ie") < 9){
- (function(){
- var keydownCallback = function(evt){
- lastKeyDownNode = evt.srcElement;
- };
- win.doc.attachEvent('onkeydown', keydownCallback);
- unload.addOnWindowUnload(function(){
- win.doc.detachEvent('onkeydown', keydownCallback);
- });
- })();
- }else{
- win.doc.addEventListener('keydown', function(evt){
- lastKeyDownNode = evt.target;
- }, true);
- }
-
- var a11yclick = function(node, listener){
- if(/input|button/i.test(node.nodeName)){
-
- return on(node, "click", listener);
- }else{
-
-
-
-
- function clickKey(/*Event*/ e){
- return (e.keyCode == keys.ENTER || e.keyCode == keys.SPACE) &&
- !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey;
- }
- var handles = [
- on(node, "keypress", function(e){
-
- if(clickKey(e)){
-
- lastKeyDownNode = e.target;
-
-
-
-
- e.preventDefault();
- }
- }),
- on(node, "keyup", function(e){
-
- if(clickKey(e) && e.target == lastKeyDownNode){
-
- lastKeyDownNode = null;
- listener.call(this, e);
- }
- }),
- on(node, "click", function(e){
-
- listener.call(this, e);
- })
- ];
- return {
- remove: function(){
- array.forEach(handles, function(h){ h.remove(); });
- }
- };
- }
- };
- return declare("dijit._OnDijitClickMixin", null, {
- connect: function(
- /*Object|null*/ obj,
- /*String|Function*/ event,
- /*String|Function*/ method){
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- return this.inherited(arguments, [obj, event == "ondijitclick" ? a11yclick : event, method]);
- }
- });
- });
|