aboutsummaryrefslogtreecommitdiffstats
path: root/src/event
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-05-20 16:51:52 +0000
committerJohn Resig <jeresig@gmail.com>2007-05-20 16:51:52 +0000
commit5ef3d5364d9372c825146c087e24af460f32ca1e (patch)
tree0bf6b8db9784764e294dc04d02ecfb558e41c1b7 /src/event
parent5e964a4a734177c7359735b893e2d6ce5abaedbd (diff)
downloadjquery-5ef3d5364d9372c825146c087e24af460f32ca1e.tar.gz
jquery-5ef3d5364d9372c825146c087e24af460f32ca1e.zip
Added support for the event object properties relatedTarget, metaKey, which, and charCode. Fixes bug #1204.
Diffstat (limited to 'src/event')
-rw-r--r--src/event/event.js25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/event/event.js b/src/event/event.js
index 84cddd355..a402340db 100644
--- a/src/event/event.js
+++ b/src/event/event.js
@@ -186,12 +186,33 @@ jQuery.event = {
if ( !event.target && event.srcElement )
event.target = event.srcElement;
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement )
+ event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( event.metaKey == null && event.ctrlKey != null )
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if ( event.which == null && event.button != null )
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+
// Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == undefined && event.clientX != undefined ) {
+ if ( event.pageX == null && event.clientX != null ) {
var e = document.documentElement || document.body;
event.pageX = event.clientX + e.scrollLeft;
event.pageY = event.clientY + e.scrollTop;
}
+
+ // Add which for keypresses: keyCode
+ if ( (event.which == null || event.type == "keypress") && event.keyCode != null )
+ event.which = event.keyCode;
+
+ // If it's a keypress event, add charCode to IE
+ if ( event.charCode == null && event.type == "keypress" )
+ event.charCode = event.keyCode;
// check if target is a textnode (safari)
if (jQuery.browser.safari && event.target.nodeType == 3) {
@@ -456,7 +477,7 @@ jQuery.fn.extend({
// A private function for handling mouse 'hovering'
function handleHover(e) {
// Check if mouse(over|out) are still within the same parent element
- var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
+ var p = e.relatedTarget;
// Traverse up the tree
while ( p && p != this ) try { p = p.parentNode } catch(e) { p = this; };