aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/event.js4
-rw-r--r--test/unit/event.js13
2 files changed, 15 insertions, 2 deletions
diff --git a/src/event.js b/src/event.js
index 5ca6d2e96..8d4031211 100644
--- a/src/event.js
+++ b/src/event.js
@@ -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 ) {
diff --git a/test/unit/event.js b/test/unit/event.js
index a18f2f673..334dc6b1c 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -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);