Event: Avoid collisions between jQuery.event.special & Object.prototype

This is a follow-up to similar changes to data & event storages from
gh-4603.

Closes gh-5235
Ref gh-4603
This commit is contained in:
Michał Gołębiowski-Owczarek 2023-04-03 18:40:24 +02:00 committed by GitHub
parent dfe212d5a1
commit bcaeb000b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 2 deletions

View File

@ -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

View File

@ -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 );