]> source.dussan.org Git - jquery.git/commitdiff
No ticket: reduce support.js
authorRichard Gibson <richard.gibson@gmail.com>
Mon, 25 Feb 2013 21:06:09 +0000 (16:06 -0500)
committerRichard Gibson <richard.gibson@gmail.com>
Mon, 25 Feb 2013 21:06:09 +0000 (16:06 -0500)
src/support.js

index f677c0963edfb50cb1638b055157870b3fb10d33..a95e5f2fed288c90cbc02a12eca6bf7aa2717837 100644 (file)
@@ -1,19 +1,17 @@
-jQuery.support = (function() {
+jQuery.support = (function( support ) {
 
-       var support, all, a,
-               input, select, fragment,
-               opt, eventName, isSupported, i,
+       var all, a, input, select, fragment, opt, eventName, isSupported, i,
                div = document.createElement("div");
 
        // Setup
        div.setAttribute( "className", "t" );
        div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
 
-       // Support tests won't run in some limited or non-browser environments
+       // Finish early in limited (non-browser) environments
        all = div.getElementsByTagName("*");
        a = div.getElementsByTagName("a")[ 0 ];
        if ( !all || !a || !all.length ) {
-               return {};
+               return support;
        }
 
        // First batch of tests
@@ -22,64 +20,63 @@ jQuery.support = (function() {
        input = div.getElementsByTagName("input")[ 0 ];
 
        a.style.cssText = "top:1px;float:left;opacity:.5";
-       support = {
-               // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-               getSetAttribute: div.className !== "t",
 
-               // IE strips leading whitespace when .innerHTML is used
-               leadingWhitespace: div.firstChild.nodeType === 3,
+       // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+       support.getSetAttribute = div.className !== "t";
 
-               // Make sure that tbody elements aren't automatically inserted
-               // IE will insert them into empty tables
-               tbody: !div.getElementsByTagName("tbody").length,
+       // IE strips leading whitespace when .innerHTML is used
+       support.leadingWhitespace = div.firstChild.nodeType === 3;
 
-               // Make sure that link elements get serialized correctly by innerHTML
-               // This requires a wrapper element in IE
-               htmlSerialize: !!div.getElementsByTagName("link").length,
+       // Make sure that tbody elements aren't automatically inserted
+       // IE will insert them into empty tables
+       support.tbody = !div.getElementsByTagName("tbody").length;
 
-               // Get the style information from getAttribute
-               // (IE uses .cssText instead)
-               style: /top/.test( a.getAttribute("style") ),
+       // Make sure that link elements get serialized correctly by innerHTML
+       // This requires a wrapper element in IE
+       support.htmlSerialize = !!div.getElementsByTagName("link").length;
 
-               // Make sure that URLs aren't manipulated
-               // (IE normalizes it by default)
-               hrefNormalized: a.getAttribute("href") === "/a",
+       // Get the style information from getAttribute
+       // (IE uses .cssText instead)
+       support.style = /top/.test( a.getAttribute("style") );
 
-               // Make sure that element opacity exists
-               // (IE uses filter instead)
-               // Use a regex to work around a WebKit issue. See #5145
-               opacity: /^0.5/.test( a.style.opacity ),
+       // Make sure that URLs aren't manipulated
+       // (IE normalizes it by default)
+       support.hrefNormalized = a.getAttribute("href") === "/a";
 
-               // Verify style float existence
-               // (IE uses styleFloat instead of cssFloat)
-               cssFloat: !!a.style.cssFloat,
+       // Make sure that element opacity exists
+       // (IE uses filter instead)
+       // Use a regex to work around a WebKit issue. See #5145
+       support.opacity = /^0.5/.test( a.style.opacity );
 
-               // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
-               checkOn: !!input.value,
+       // Verify style float existence
+       // (IE uses styleFloat instead of cssFloat)
+       support.cssFloat = !!a.style.cssFloat;
 
-               // Make sure that a selected-by-default option has a working selected property.
-               // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-               optSelected: opt.selected,
+       // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+       support.checkOn = !!input.value;
 
-               // Tests for enctype support on a form (#6743)
-               enctype: !!document.createElement("form").enctype,
+       // Make sure that a selected-by-default option has a working selected property.
+       // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+       support.optSelected = opt.selected;
 
-               // Makes sure cloning an html5 element does not cause problems
-               // Where outerHTML is undefined, this still works
-               html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+       // Tests for enctype support on a form (#6743)
+       support.enctype = !!document.createElement("form").enctype;
 
-               // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
-               boxModel: document.compatMode === "CSS1Compat",
+       // Makes sure cloning an html5 element does not cause problems
+       // Where outerHTML is undefined, this still works
+       support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
 
-               // Will be defined later
-               deleteExpando: true,
-               noCloneEvent: true,
-               inlineBlockNeedsLayout: false,
-               shrinkWrapBlocks: false,
-               reliableMarginRight: true,
-               boxSizingReliable: true,
-               pixelPosition: false
-       };
+       // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
+       support.boxModel = document.compatMode === "CSS1Compat";
+
+       // Will be defined later
+       support.inlineBlockNeedsLayout = false;
+       support.shrinkWrapBlocks = false;
+       support.pixelPosition = false;
+       support.deleteExpando = true;
+       support.noCloneEvent = true;
+       support.reliableMarginRight = true;
+       support.boxSizingReliable = true;
 
        // Make sure checked status is properly cloned
        input.checked = true;
@@ -237,5 +234,5 @@ jQuery.support = (function() {
        all = select = fragment = opt = a = input = null;
 
        return support;
-})();
+})({});