Bug Tracker

Changeset 1929

Show
Ignore:
Timestamp:
05/20/07 16:51:52 (2 years ago)
Author:
jeresig
Message:

Added support for the event object properties relatedTarget, metaKey, which, and charCode. Fixes bug #1204.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/jquery/src/event/event.js

    r1886 r1929  
    187187            event.target = event.srcElement; 
    188188 
     189        // Add relatedTarget, if necessary 
     190        if ( !event.relatedTarget && event.fromElement ) 
     191            event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement; 
     192 
     193        // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) 
     194        if ( event.metaKey == null && event.ctrlKey != null ) 
     195            event.metaKey = event.ctrlKey; 
     196 
     197        // Add which for click: 1 == left; 2 == middle; 3 == right 
     198        // Note: button is not normalized, so don't use it 
     199        if ( event.which == null && event.button != null ) 
     200            event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); 
     201 
    189202        // Calculate pageX/Y if missing and clientX/Y available 
    190         if ( event.pageX == undefined && event.clientX != undefined ) { 
     203        if ( event.pageX == null && event.clientX != null ) { 
    191204            var e = document.documentElement || document.body; 
    192205            event.pageX = event.clientX + e.scrollLeft; 
    193206            event.pageY = event.clientY + e.scrollTop; 
    194207        } 
     208 
     209        // Add which for keypresses: keyCode 
     210        if ( (event.which == null || event.type == "keypress") && event.keyCode != null ) 
     211            event.which = event.keyCode;     
     212 
     213        // If it's a keypress event, add charCode to IE 
     214        if ( event.charCode == null && event.type == "keypress" ) 
     215            event.charCode = event.keyCode; 
    195216                 
    196217        // check if target is a textnode (safari) 
     
    457478        function handleHover(e) { 
    458479            // Check if mouse(over|out) are still within the same parent element 
    459             var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; 
     480            var p = e.relatedTarget; 
    460481     
    461482            // Traverse up the tree