]> source.dussan.org Git - jquery.git/commitdiff
Event: provide verbose info for focus(in | out) & rename support props
authorOleg Gaidarenko <markelog@gmail.com>
Tue, 19 May 2015 10:08:01 +0000 (13:08 +0300)
committerOleg Gaidarenko <markelog@gmail.com>
Tue, 19 May 2015 10:46:34 +0000 (13:46 +0300)
Ref c074006a69db73a116dc04ec78844468a8cea7d3
Ref gh-2312

src/event.js
src/event/support.js
test/unit/support.js

index 43d36b270507beb8f7f890059a69edb52718ff2a..5004b8ecfb3f303e3d153da8b380e822e9d225bb 100644 (file)
@@ -828,7 +828,7 @@ jQuery.each({
 });
 
 // IE submit delegation
-if ( !support.submitBubbles ) {
+if ( !support.submit ) {
 
        jQuery.event.special.submit = {
                setup: function() {
@@ -845,11 +845,11 @@ if ( !support.submitBubbles ) {
                                                elem.form :
                                                undefined;
 
-                               if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+                               if ( form && !jQuery._data( form, "submit" ) ) {
                                        jQuery.event.add( form, "submit._submit", function( event ) {
                                                event._submitBubble = true;
                                        });
-                                       jQuery._data( form, "submitBubbles", true );
+                                       jQuery._data( form, "submit", true );
                                }
                        });
                        // return undefined since we don't need an event listener
@@ -878,7 +878,7 @@ if ( !support.submitBubbles ) {
 }
 
 // IE change delegation and checkbox/radio fix
-if ( !support.changeBubbles ) {
+if ( !support.change ) {
 
        jQuery.event.special.change = {
 
@@ -908,13 +908,13 @@ if ( !support.changeBubbles ) {
                        jQuery.event.add( this, "beforeactivate._change", function( e ) {
                                var elem = e.target;
 
-                               if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+                               if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) {
                                        jQuery.event.add( elem, "change._change", function( event ) {
                                                if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
                                                        jQuery.event.simulate( "change", this.parentNode, event, true );
                                                }
                                        });
-                                       jQuery._data( elem, "changeBubbles", true );
+                                       jQuery._data( elem, "change", true );
                                }
                        });
                },
@@ -938,14 +938,21 @@ if ( !support.changeBubbles ) {
        };
 }
 
-// Create "bubbling" focus and blur events
-if ( !support.focusinBubbles ) {
+// Support: Firefox
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome, Safari
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
        jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
 
                // Attach a single capturing handler on the document while someone wants focusin/focusout
                var handler = function( event ) {
-                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-                       };
+                       jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+               };
 
                jQuery.event.special[ fix ] = {
                        setup: function() {
index caac5179f38cd96ff54f890d5dd244a9e7c6a3ff..ed0c861aa2e5e660703f6924eb9a077627d9440b 100644 (file)
@@ -6,14 +6,14 @@ define([
        var i, eventName,
                div = document.createElement( "div" );
 
-       // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)
+       // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)
        for ( i in { submit: true, change: true, focusin: true }) {
                eventName = "on" + i;
 
-               if ( !(support[ i + "Bubbles" ] = eventName in window) ) {
+               if ( !(support[ i ] = eventName in window) ) {
                        // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
                        div.setAttribute( eventName, "t" );
-                       support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;
+                       support[ i ] = div.attributes[ eventName ].expando === false;
                }
        }
 
index 74692c06a0111cac42ecbad6a6dc607f2ffc2629..4d5ba57891207f0eba71ec3d70261b0348f6777f 100644 (file)
@@ -75,7 +75,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -83,7 +83,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -100,14 +100,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /(msie 10\.0|trident\/7\.0)/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": false,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": false,
@@ -115,7 +115,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": true,
+                       "focusin": true,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -132,14 +132,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /msie 9\.0/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": false,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": false,
@@ -147,7 +147,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": true,
+                       "focusin": true,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -164,14 +164,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /msie 8\.0/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": false,
                        "boxSizingReliable": false,
-                       "changeBubbles": false,
+                       "change": false,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -179,7 +179,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": false,
                        "cssFloat": false,
                        "deleteExpando": false,
-                       "focusinBubbles": true,
+                       "focusin": true,
                        "html5Clone": false,
                        "htmlSerialize": false,
                        "input": false,
@@ -196,14 +196,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": false,
                        "reliableMarginRight": true,
                        "style": false,
-                       "submitBubbles": false
+                       "submit": false
                };
        } else if ( /8.0(\.\d+|) safari/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -211,7 +211,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": false,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -228,14 +228,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /(6|7)\.0(\.\d+|) safari/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -243,7 +243,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -260,14 +260,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /firefox/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -275,7 +275,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -292,14 +292,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /iphone os 8/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -307,7 +307,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": false,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -324,14 +324,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /iphone os (6|7)/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": true,
                        "clearCloneStyle": true,
@@ -339,7 +339,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -356,14 +356,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /android 4\.[0-3]/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": false,
                        "checkOn": false,
                        "clearCloneStyle": true,
@@ -371,7 +371,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -388,14 +388,14 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": true,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        } else if ( /android 2\.3/i.test( userAgent ) ) {
                expected = {
                        "ajax": true,
                        "attributes": true,
                        "boxSizingReliable": true,
-                       "changeBubbles": true,
+                       "change": true,
                        "checkClone": true,
                        "checkOn": false,
                        "clearCloneStyle": false,
@@ -403,7 +403,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
-                       "focusinBubbles": false,
+                       "focusin": false,
                        "html5Clone": true,
                        "htmlSerialize": true,
                        "input": true,
@@ -420,7 +420,7 @@ testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Sec
                        "reliableHiddenOffsets": true,
                        "reliableMarginRight": false,
                        "style": true,
-                       "submitBubbles": true
+                       "submit": true
                };
        }