diff --git a/src/attributes/support.js b/src/attributes/support.js
index 230722499..3f85d8aaa 100644
--- a/src/attributes/support.js
+++ b/src/attributes/support.js
@@ -3,10 +3,11 @@ define([
], function( support ) {
(function() {
- var a, input, select, opt,
- div = document.createElement("div" );
+ // Minified: var a,b,c,d,e
+ var input, div, select, a, opt;
// Setup
+ div = document.createElement( "div" );
div.setAttribute( "className", "t" );
div.innerHTML = "
a";
a = div.getElementsByTagName("a")[ 0 ];
@@ -54,9 +55,6 @@ define([
input.value = "t";
input.setAttribute( "type", "radio" );
support.radioValue = input.value === "t";
-
- // Null elements to avoid leaks in IE.
- a = input = select = opt = div = null;
})();
return support;
diff --git a/src/css/support.js b/src/css/support.js
index 2b525ebf6..07a2a7f48 100644
--- a/src/css/support.js
+++ b/src/css/support.js
@@ -4,89 +4,40 @@ define([
], function( jQuery, support ) {
(function() {
- var a, reliableHiddenOffsetsVal, boxSizingVal, boxSizingReliableVal,
- pixelPositionVal,
- div = document.createElement( "div" ),
- containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px",
- // Support: Firefox<29, Android 2.3 (Prefixed box-sizing versions).
- divReset =
- "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;" +
- "display:block;padding:0;margin:0;border:0";
+ // Minified: var b,c,d,e,f,g, h,i
+ var div, style, a, pixelPositionVal, boxSizingVal, boxSizingReliableVal,
+ reliableHiddenOffsetsVal, reliableMarginRightVal;
// Setup
+ div = document.createElement( "div" );
div.innerHTML = "
a";
a = div.getElementsByTagName( "a" )[ 0 ];
+ style = a && a.style;
// Finish early in limited (non-browser) environments
- if ( !a || !a.style ) {
+ if ( !style ) {
return;
}
- a.style.cssText = "float:left;opacity:.5";
+ style.cssText = "float:left;opacity:.5";
// Support: IE<9
// Make sure that element opacity exists (as opposed to filter)
- support.opacity = a.style.opacity === "0.5";
+ support.opacity = style.opacity === "0.5";
// Verify style float existence
// (IE uses styleFloat instead of cssFloat)
- support.cssFloat = !!a.style.cssFloat;
+ support.cssFloat = !!style.cssFloat;
div.style.backgroundClip = "content-box";
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";
- // Null elements to avoid leaks in IE.
- a = div = null;
-
jQuery.extend(support, {
reliableHiddenOffsets: function() {
- if ( reliableHiddenOffsetsVal != null ) {
- return reliableHiddenOffsetsVal;
+ if ( reliableHiddenOffsetsVal == null ) {
+ computeStyleTests();
}
-
- var container, tds, isSupported,
- div = document.createElement( "div" ),
- body = document.getElementsByTagName( "body" )[ 0 ];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- // Setup
- div.setAttribute( "className", "t" );
- div.innerHTML = "
a";
-
- container = document.createElement( "div" );
- container.style.cssText = containerStyles;
-
- body.appendChild( container ).appendChild( div );
-
- // Support: IE8
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- div.innerHTML = "
t
";
- tds = div.getElementsByTagName( "td" );
- tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Support: IE8
- // Check if empty table cells still have offsetWidth/Height
- reliableHiddenOffsetsVal = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- body.removeChild( container );
-
- // Null elements to avoid leaks in IE.
- div = body = null;
-
return reliableHiddenOffsetsVal;
},
@@ -113,65 +64,35 @@ define([
// Support: Android 2.3
reliableMarginRight: function() {
- var body, container, div, marginDiv,
- // Support: IE<9.
- // IE should pass the test but we're using getComputedStyle
- // to compute it so just return true if the method is not present.
- reliableMarginRightVal = true;
-
- // Use window.getComputedStyle because jsdom on node.js will break without it.
- if ( window.getComputedStyle ) {
- body = document.getElementsByTagName( "body" )[ 0 ];
- if ( !body ) {
- // Test fired too early or in an unsupported environment, exit.
- return;
- }
-
- container = document.createElement( "div" );
- div = document.createElement( "div" );
- container.style.cssText = containerStyles;
-
- body.appendChild( container ).appendChild( div );
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. (#3333)
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- marginDiv = div.appendChild( document.createElement( "div" ) );
- marginDiv.style.cssText = div.style.cssText = divReset;
- marginDiv.style.marginRight = marginDiv.style.width = "0";
- div.style.width = "1px";
-
- reliableMarginRightVal =
- !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
-
- body.removeChild( container );
+ if ( reliableMarginRightVal == null ) {
+ computeStyleTests();
}
-
return reliableMarginRightVal;
}
});
function computeStyleTests() {
- var container, div,
- body = document.getElementsByTagName( "body" )[ 0 ];
+ // Minified: var b,c,d,j
+ var div, body, container, contents;
- if ( !body ) {
+ body = document.getElementsByTagName( "body" )[ 0 ];
+ if ( !body || !body.style ) {
// Test fired too early or in an unsupported environment, exit.
return;
}
- container = document.createElement( "div" );
+ // Setup
div = document.createElement( "div" );
- container.style.cssText = containerStyles;
-
+ container = document.createElement( "div" );
+ container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
body.appendChild( container ).appendChild( div );
- // Support: Firefox<29, Android 2.3 (Prefixed box-sizing versions).
div.style.cssText =
- "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
- "position:absolute;display:block;padding:1px;border:1px;width:4px;" +
- "margin-top:1%;top:1%";
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+ "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+ "border:1px;padding:1px;width:4px;position:absolute";
// Workaround failing boxSizing test due to offsetWidth returning wrong value
// with some non-1 values of body zoom, ticket #13543
@@ -179,21 +100,55 @@ define([
boxSizingVal = div.offsetWidth === 4;
});
- // Will be changed later if needed.
- boxSizingReliableVal = true;
+ // Support: IE<9
+ // Assume reasonable values in the absence of getComputedStyle
pixelPositionVal = false;
+ reliableMarginRightVal = boxSizingReliableVal = true;
- // Use window.getComputedStyle because jsdom on node.js will break without it.
+ // Support: node.js jsdom
+ // Don't assume that getComputedStyle is a property of the global object
if ( window.getComputedStyle ) {
pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
boxSizingReliableVal =
( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Support: Android 2.3
+ // Div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container (#3333)
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ contents = div.appendChild( document.createElement( "div" ) );
+
+ // Reset CSS: box-sizing; display; margin; border; padding
+ contents.style.cssText = div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+ "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+ contents.style.marginRight = contents.style.width = "0";
+ div.style.width = "1px";
+
+ reliableMarginRightVal =
+ !parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );
+ }
+
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "
a";
// IE strips leading whitespace when .innerHTML is used
support.leadingWhitespace = div.firstChild.nodeType === 3;
@@ -69,9 +69,6 @@ define([
support.deleteExpando = false;
}
}
-
- // Null elements to avoid leaks in IE.
- fragment = div = input = null;
})();
return support;
diff --git a/src/support.js b/src/support.js
index dbaf92159..4728be812 100644
--- a/src/support.js
+++ b/src/support.js
@@ -19,23 +19,21 @@ support.ownLast = i !== "0";
// false until the test is run
support.inlineBlockNeedsLayout = false;
+// Execute ASAP in case we need to set body.style.zoom
jQuery(function() {
- // We need to execute this one support test ASAP because we need to know
- // if body.style.zoom needs to be set.
+ // Minified: var a,b,c,d
+ var val, div, body, container;
- var container, div,
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
+ body = document.getElementsByTagName( "body" )[ 0 ];
+ if ( !body || !body.style ) {
// Return for frameset docs that don't have a body
return;
}
// Setup
- container = document.createElement( "div" );
- container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
-
div = document.createElement( "div" );
+ container = document.createElement( "div" );
+ container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
body.appendChild( container ).appendChild( div );
if ( typeof div.style.zoom !== strundefined ) {
@@ -43,9 +41,10 @@ jQuery(function() {
// Check if natively block-level elements act like inline-block
// elements when setting their display to 'inline' and giving
// them layout
- div.style.cssText = "border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1";
+ div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";
- if ( (support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 )) ) {
+ support.inlineBlockNeedsLayout = val = div.offsetWidth === 3;
+ if ( val ) {
// Prevent IE 6 from affecting layout for positioned elements #11048
// Prevent IE from shrinking the body in IE 7 mode #12869
// Support: IE<8
@@ -54,9 +53,6 @@ jQuery(function() {
}
body.removeChild( container );
-
- // Null elements to avoid leaks in IE
- container = div = null;
});
});