Remove oldIE proprietary event methods/properties.

This commit is contained in:
Dave Methvin 2012-12-26 16:47:31 -05:00
parent 1c4297816d
commit 97fa97f0c1

View File

@ -86,14 +86,10 @@ jQuery.event = {
handlers = events[ type ] = []; handlers = events[ type ] = [];
handlers.delegateCount = 0; handlers.delegateCount = 0;
// Only use addEventListener/attachEvent if the special events handler returns false // Only use addEventListener if the special events handler returns false
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
// Bind the global event handler to the element
if ( elem.addEventListener ) { if ( elem.addEventListener ) {
elem.addEventListener( type, eventHandle, false ); elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, eventHandle );
} }
} }
} }
@ -580,26 +576,11 @@ jQuery.event = {
// The 1.7 special event interface should provide all the hooks needed now. // The 1.7 special event interface should provide all the hooks needed now.
jQuery.event.handle = jQuery.event.dispatch; jQuery.event.handle = jQuery.event.dispatch;
jQuery.removeEvent = document.removeEventListener ? jQuery.removeEvent = function( elem, type, handle ) {
function( elem, type, handle ) { if ( elem.removeEventListener ) {
if ( elem.removeEventListener ) { elem.removeEventListener( type, handle, false );
elem.removeEventListener( type, handle, false ); }
} };
} :
function( elem, type, handle ) {
var name = "on" + type;
if ( elem.detachEvent ) {
// #8545, #7054, preventing memory leaks for custom events in IE6-8
// detachEvent needed property on element, by name of that event, to properly expose it to GC
if ( typeof elem[ name ] === "undefined" ) {
elem[ name ] = null;
}
elem.detachEvent( name, handle );
}
};
jQuery.Event = function( src, props ) { jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword // Allow instantiation without the 'new' keyword
@ -614,7 +595,7 @@ jQuery.Event = function( src, props ) {
// Events bubbling up the document may have been marked as prevented // Events bubbling up the document may have been marked as prevented
// by a handler lower down the tree; reflect the correct value. // by a handler lower down the tree; reflect the correct value.
this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || this.isDefaultPrevented = ( src.defaultPrevented ||
src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
// Event type // Event type
@ -648,32 +629,17 @@ jQuery.Event.prototype = {
this.isDefaultPrevented = returnTrue; this.isDefaultPrevented = returnTrue;
var e = this.originalEvent; var e = this.originalEvent;
if ( !e ) { if ( e && e.preventDefault ) {
return;
}
// if preventDefault exists run it on the original event
if ( e.preventDefault ) {
e.preventDefault(); e.preventDefault();
// otherwise set the returnValue property of the original event to false (IE)
} else {
e.returnValue = false;
} }
}, },
stopPropagation: function() { stopPropagation: function() {
this.isPropagationStopped = returnTrue; this.isPropagationStopped = returnTrue;
var e = this.originalEvent; var e = this.originalEvent;
if ( !e ) { if ( e && e.stopPropagation ) {
return;
}
// if stopPropagation exists run it on the original event
if ( e.stopPropagation ) {
e.stopPropagation(); e.stopPropagation();
} }
// otherwise set the cancelBubble property of the original event to true (IE)
e.cancelBubble = true;
}, },
stopImmediatePropagation: function() { stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = returnTrue; this.isImmediatePropagationStopped = returnTrue;