From ec9b38a34fb9bd81d1903cf12b69466f699abca5 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Wed, 23 Jan 2013 23:25:29 -0500 Subject: [PATCH] Fix #13315: compare typeof node.method to var instead of literal "undefined" for safer uglification --- src/attributes.js | 6 +++--- src/core.js | 4 ++++ src/event.js | 4 ++-- src/manipulation.js | 6 +++--- src/offset.js | 2 +- src/support.js | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index 754a35e87..5aaadb7c4 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -137,7 +137,7 @@ jQuery.fn.extend({ } // Toggle whole class name - } else if ( type === "undefined" || type === "boolean" ) { + } else if ( type === core_strundefined || type === "boolean" ) { if ( this.className ) { // store className if set jQuery._data( this, "__className__", this.className ); @@ -299,7 +299,7 @@ jQuery.extend({ } // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { + if ( typeof elem.getAttribute === core_strundefined ) { return jQuery.prop( elem, name, value ); } @@ -332,7 +332,7 @@ jQuery.extend({ // In IE9+, Flash objects don't have .getAttribute (#12945) // Support: IE9+ - if ( typeof elem.getAttribute !== "undefined" ) { + if ( typeof elem.getAttribute !== core_strundefined ) { ret = elem.getAttribute( name ); } diff --git a/src/core.js b/src/core.js index 865167757..64c9f9cc7 100644 --- a/src/core.js +++ b/src/core.js @@ -5,6 +5,10 @@ var // The deferred used on DOM ready readyList, + // Support: IE<9 + // For `typeof node.method` instead of `node.method !== undefined` + core_strundefined = typeof undefined, + // Use the correct document accordingly with window argument (sandbox) document = window.document, location = window.location, diff --git a/src/event.js b/src/event.js index 5841aff7c..ca8719b7f 100644 --- a/src/event.js +++ b/src/event.js @@ -52,7 +52,7 @@ jQuery.event = { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; }; @@ -619,7 +619,7 @@ jQuery.removeEvent = document.removeEventListener ? // #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" ) { + if ( typeof elem[ name ] === core_strundefined ) { elem[ name ] = null; } diff --git a/src/manipulation.js b/src/manipulation.js index 34309d0c9..569a71d83 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -531,8 +531,8 @@ jQuery.each({ function getAll( context, tag ) { var elems, elem, i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) : + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : undefined; if ( !found ) { @@ -778,7 +778,7 @@ jQuery.extend({ if ( deleteExpando ) { delete elem[ internalKey ]; - } else if ( typeof elem.removeAttribute !== "undefined" ) { + } else if ( typeof elem.removeAttribute !== core_strundefined ) { elem.removeAttribute( internalKey ); } else { diff --git a/src/offset.js b/src/offset.js index 04c94cade..4efb962ff 100644 --- a/src/offset.js +++ b/src/offset.js @@ -25,7 +25,7 @@ jQuery.fn.offset = function( options ) { // If we don't have gBCR, just use 0,0 rather than error // BlackBerry 5, iOS 3 (original iPhone) - if ( typeof elem.getBoundingClientRect !== "undefined" ) { + if ( typeof elem.getBoundingClientRect !== core_strundefined ) { box = elem.getBoundingClientRect(); } win = getWindow( doc ); diff --git a/src/support.js b/src/support.js index ce764a1ce..09f894c70 100644 --- a/src/support.js +++ b/src/support.js @@ -201,7 +201,7 @@ jQuery.support = (function() { !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); } - if ( typeof div.style.zoom !== "undefined" ) { + if ( typeof div.style.zoom !== core_strundefined ) { // Support: IE<8 // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving -- 2.39.5