| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 /* 2 * jquery.simulate - simulate browser mouse and keyboard events 3 * 4 * Copyright (c) 2009 Eduardo Lundgren (eduardolundgren@gmail.com) 5 * and Richard D. Worth (rdworth@gmail.com) 6 * 7 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 8 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 9 * 10 */ 11 12 ;(function($) { 13 14 $.fn.extend({ 15 simulate: function(type, options) { 16 return this.each(function() { 17 var opt = $.extend({}, $.simulate.defaults, options || {}); 18 new $.simulate(this, type, opt); 19 }); 20 } 21 }); 22 23 $.simulate = function(el, type, options) { 24 this.target = el; 25 this.options = options; 26 27 if (/^drag$/.test(type)) { 28 this[type].apply(this, [this.target, options]); 29 } else { 30 this.simulateEvent(el, type, options); 31 } 32 } 33 34 $.extend($.simulate.prototype, { 35 simulateEvent: function(el, type, options) { 36 var evt = this.createEvent(type, options); 37 this.dispatchEvent(el, type, evt, options); 38 return evt; 39 }, 40 createEvent: function(type, options) { 41 if (/^mouse(over|out|down|up|move)|(dbl)?click$/.test(type)) { 42 return this.mouseEvent(type, options); 43 } else if (/^key(up|down|press)$/.test(type)) { 44 return this.keyboardEvent(type, options); 45 } 46 }, 47 mouseEvent: function(type, options) { 48 var evt; 49 var e = $.extend({ 50 bubbles: true, cancelable: (type != "mousemove"), view: window, detail: 0, 51 screenX: 0, screenY: 0, clientX: 0, clientY: 0, 52 ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, 53 button: 0, relatedTarget: undefined 54 }, options); 55 56 var relatedTarget = $(e.relatedTarget)[0]; 57 58 if ($.isFunction(document.createEvent)) { 59 evt = document.createEvent("MouseEvents"); 60 evt.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail, 61 e.screenX, e.screenY, e.clientX, e.clientY, 62 e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 63 e.button, e.relatedTarget || document.body.parentNode); 64 } else if (document.createEventObject) { 65 evt = document.createEventObject(); 66 $.extend(evt, e); 67 evt.button = { 0:1, 1:4, 2:2 }[evt.button] || evt.button; 68 } 69 return evt; 70 }, 71 keyboardEvent: function(type, options) { 72 var evt; 73 74 var e = $.extend({ bubbles: true, cancelable: true, view: window, 75 ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, 76 keyCode: 0, charCode: 0 77 }, options); 78 79 if ($.isFunction(document.createEvent)) { 80 try { 81 evt = document.createEvent("KeyEvents"); 82 evt.initKeyEvent(type, e.bubbles, e.cancelable, e.view, 83 e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 84 e.keyCode, e.charCode); 85 } catch(err) { 86 evt = document.createEvent("Events"); 87 evt.initEvent(type, e.bubbles, e.cancelable); 88 $.extend(evt, { view: e.view, 89 ctrlKey: e.ctrlKey, altKey: e.altKey, shiftKey: e.shiftKey, metaKey: e.metaKey, 90 keyCode: e.keyCode, charCode: e.charCode 91 }); 92 } 93 } else if (document.createEventObject) { 94 evt = document.createEventObject(); 95 $.extend(evt, e); 96 } 97 if ($.browser.msie || $.browser.opera) { 98 evt.keyCode = (e.charCode > 0) ? e.charCode : e.keyCode; 99 evt.charCode = undefined; 100 } 101 return evt; 102 }, 103 104 dispatchEvent: function(el, type, evt) { 105 if (el.dispatchEvent) { 106 el.dispatchEvent(evt); 107 } else if (el.fireEvent) { 108 el.fireEvent('on' + type, evt); 109 } 110 return evt; 111 }, 112 113 drag: function(el) { 114 var self = this, center = this.findCenter(this.target), 115 options = this.options, x = Math.floor(center.x), y = Math.floor(center.y), 116 dx = options.dx || 0, dy = options.dy || 0, target = this.target; 117 var coord = { clientX: x, clientY: y }; 118 this.simulateEvent(target, "mousedown", coord); 119 coord = { clientX: x + 1, clientY: y + 1 }; 120 this.simulateEvent(document, "mousemove", coord); 121 coord = { clientX: x + dx, clientY: y + dy }; 122 this.simulateEvent(document, "mousemove", coord); 123 this.simulateEvent(document, "mousemove", coord); 124 this.simulateEvent(target, "mouseup", coord); 125 }, 126 findCenter: function(el) { 127 var el = $(this.target), o = el.offset(); 128 return { 129 x: o.left + el.outerWidth() / 2, 130 y: o.top + el.outerHeight() / 2 131 }; 132 } 133 }); 134 135 $.extend($.simulate, { 136 defaults: { 137 speed: 'sync' 138 }, 139 VK_TAB: 9, 140 VK_ENTER: 13, 141 VK_ESC: 27, 142 VK_PGUP: 33, 143 VK_PGDN: 34, 144 VK_END: 35, 145 VK_HOME: 36, 146 VK_LEFT: 37, 147 VK_UP: 38, 148 VK_RIGHT: 39, 149 VK_DOWN: 40 150 }); 151 152 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |