aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/event.js4
-rw-r--r--test/unit/event.js20
2 files changed, 22 insertions, 2 deletions
diff --git a/src/event.js b/src/event.js
index 7c9e1d546..5d2c8c1c3 100644
--- a/src/event.js
+++ b/src/event.js
@@ -429,7 +429,7 @@ jQuery.event = {
new jQuery.Event( originalEvent );
},
- special: {
+ special: jQuery.extend( Object.create( null ), {
load: {
// Prevent triggered image.load events from bubbling to window.load
@@ -494,7 +494,7 @@ jQuery.event = {
}
}
}
- }
+ } )
};
// Ensure the presence of an event listener that handles manually-triggered
diff --git a/test/unit/event.js b/test/unit/event.js
index 79057f191..920b2a182 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -2428,6 +2428,26 @@ QUnit.test( ".on and .off, selective mixed removal (trac-10705)", function( asse
.trigger( "click" ); // 0
} );
+QUnit.test( "special interference with Object.prototype", function( assert ) {
+ assert.expect( 1 );
+
+ var triggered = false;
+
+ Object.prototype.jqfake = {
+ trigger: function() {
+ triggered = true;
+ }
+ };
+
+ jQuery( "<div></div>" )
+ .appendTo( "#qunit-fixture" )
+ .trigger( "jqfake" );
+
+ delete Object.prototype.jqfake;
+
+ assert.ok( !triggered, "Object.prototype.jqfake.trigger not called" );
+} );
+
QUnit.test( ".on( event-map, null-selector, data ) trac-11130", function( assert ) {
assert.expect( 1 );