Ref #14180, let focusin/out work on non-element targets.

This commit is contained in:
Dave Methvin 2013-11-14 16:33:12 -05:00
parent 498e0e6c9b
commit c2aca17d45
2 changed files with 15 additions and 2 deletions

View File

@ -728,7 +728,7 @@ if ( !support.focusinBubbles ) {
jQuery.event.special[ fix ] = {
setup: function() {
var doc = this.ownerDocument,
var doc = this.ownerDocument || this,
attaches = data_priv.access( doc, fix );
if ( !attaches ) {
@ -737,7 +737,7 @@ if ( !support.focusinBubbles ) {
data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
},
teardown: function() {
var doc = this.ownerDocument,
var doc = this.ownerDocument || this,
attaches = data_priv.access( doc, fix ) - 1;
if ( !attaches ) {

View File

@ -2374,6 +2374,19 @@ test("fixHooks extensions", function() {
jQuery.event.fixHooks.click = saved;
});
test( "focusin using non-element targets", function() {
expect( 2 );
jQuery( document ).on( "focusin", function( e ) {
ok( e.type === "focusin", "got a focusin event on a document" );
}).trigger( "focusin" ).off( "focusin" );
jQuery( window ).on( "focusin", function( e ) {
ok( e.type === "focusin", "got a focusin event on a window" );
}).trigger( "focusin" ).off( "focusin" );
});
testIframeWithCallback( "focusin from an iframe", "event/focusinCrossFrame.html", function( frameDoc ) {
expect(1);