mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Support: Reduce size via code consolidation and minification awareness
Ref badcd1b6f3
Closes gh-1518
This commit is contained in:
parent
f361f0378b
commit
b96522acfe
@ -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 = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
||||
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;
|
||||
|
@ -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 = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
||||
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 = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
||||
|
||||
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 = "<table><tr><td></td><td>t</td></tr></table>";
|
||||
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 = "<table><tr><td></td><td>t</td></tr></table>";
|
||||
contents = div.getElementsByTagName( "td" );
|
||||
contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
|
||||
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
|
||||
if ( reliableHiddenOffsetsVal ) {
|
||||
contents[ 0 ].style.display = "";
|
||||
contents[ 1 ].style.display = "none";
|
||||
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
|
||||
}
|
||||
|
||||
body.removeChild( container );
|
||||
|
||||
// Null elements to avoid leaks in IE.
|
||||
div = body = null;
|
||||
}
|
||||
|
||||
})();
|
||||
|
@ -4,73 +4,47 @@ define([
|
||||
], function( strundefined, support ) {
|
||||
|
||||
(function() {
|
||||
var a, shrinkWrapBlocksVal,
|
||||
div = document.createElement( "div" ),
|
||||
// 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";
|
||||
|
||||
// Setup
|
||||
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
||||
a = div.getElementsByTagName( "a" )[ 0 ];
|
||||
|
||||
// Finish early in limited (non-browser) environments
|
||||
if ( !a || !a.style ) {
|
||||
return;
|
||||
}
|
||||
|
||||
a.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";
|
||||
|
||||
// Verify style float existence
|
||||
// (IE uses styleFloat instead of cssFloat)
|
||||
support.cssFloat = !!a.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;
|
||||
var shrinkWrapBlocksVal;
|
||||
|
||||
support.shrinkWrapBlocks = function() {
|
||||
var body, container, div, containerStyles;
|
||||
|
||||
if ( shrinkWrapBlocksVal == null ) {
|
||||
body = document.getElementsByTagName( "body" )[ 0 ];
|
||||
if ( !body ) {
|
||||
// Test fired too early or in an unsupported environment, exit.
|
||||
return;
|
||||
}
|
||||
|
||||
containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px";
|
||||
container = document.createElement( "div" );
|
||||
div = document.createElement( "div" );
|
||||
|
||||
body.appendChild( container ).appendChild( div );
|
||||
|
||||
// Will be changed later if needed.
|
||||
shrinkWrapBlocksVal = false;
|
||||
|
||||
if ( typeof div.style.zoom !== strundefined ) {
|
||||
// Support: IE6
|
||||
// Check if elements with layout shrink-wrap their children
|
||||
div.style.cssText = divReset + ";width:1px;padding:1px;zoom:1";
|
||||
div.innerHTML = "<div></div>";
|
||||
div.firstChild.style.width = "5px";
|
||||
shrinkWrapBlocksVal = div.offsetWidth !== 3;
|
||||
}
|
||||
|
||||
body.removeChild( container );
|
||||
|
||||
// Null elements to avoid leaks in IE.
|
||||
body = container = div = null;
|
||||
if ( shrinkWrapBlocksVal != null ) {
|
||||
return shrinkWrapBlocksVal;
|
||||
}
|
||||
|
||||
// Will be changed later if needed.
|
||||
shrinkWrapBlocksVal = false;
|
||||
|
||||
// Minified: var b,c,d
|
||||
var div, body, container;
|
||||
|
||||
body = document.getElementsByTagName( "body" )[ 0 ];
|
||||
if ( !body || !body.style ) {
|
||||
// Test fired too early or in an unsupported environment, exit.
|
||||
return;
|
||||
}
|
||||
|
||||
// Setup
|
||||
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 );
|
||||
|
||||
// Support: IE6
|
||||
// Check if elements with layout shrink-wrap their children
|
||||
if ( typeof div.style.zoom !== strundefined ) {
|
||||
// Reset CSS: box-sizing; display; margin; border
|
||||
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:1px;width:1px;zoom:1";
|
||||
div.appendChild( document.createElement( "div" ) ).style.width = "5px";
|
||||
shrinkWrapBlocksVal = div.offsetWidth !== 3;
|
||||
}
|
||||
|
||||
body.removeChild( container );
|
||||
|
||||
return shrinkWrapBlocksVal;
|
||||
};
|
||||
|
||||
|
@ -3,13 +3,13 @@ define([
|
||||
], function( support ) {
|
||||
|
||||
(function() {
|
||||
var fragment = document.createDocumentFragment(),
|
||||
div = document.createElement("div"),
|
||||
input = document.createElement("input");
|
||||
// Minified: var a,b,c
|
||||
var input = document.createElement( "input" ),
|
||||
div = document.createElement( "div" ),
|
||||
fragment = document.createDocumentFragment();
|
||||
|
||||
// Setup
|
||||
div.setAttribute( "className", "t" );
|
||||
div.innerHTML = " <link/><table></table><a href='/a'>a</a>";
|
||||
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
||||
|
||||
// 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;
|
||||
|
@ -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;
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user