event: Stricter type checking in trigger - Fixes #13360 - Closes gh-1153

Squashed commit of the following:

commit 5935a362c7
Author: Andrew Plummer <plummer.andrew@gmail.com>
Date:   Fri Feb 1 02:40:42 2013 +0900

    Using "hasOwnProperty" to check for direct properties "type" and
    "namespace" on events before triggering.
This commit is contained in:
Andrew Plummer 2013-01-31 12:01:34 -06:00 committed by Corey Frang
parent d79bf3517e
commit f005af54e4
2 changed files with 16 additions and 2 deletions

View File

@ -207,8 +207,8 @@ jQuery.event = {
var handle, ontype, cur, var handle, ontype, cur,
bubbleType, special, tmp, i, bubbleType, special, tmp, i,
eventPath = [ elem || document ], eventPath = [ elem || document ],
type = event.type || event, type = core_hasOwn.call( event, "type" ) ? event.type : event,
namespaces = event.namespace ? event.namespace.split(".") : []; namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
cur = tmp = elem = elem || document; cur = tmp = elem = elem || document;

View File

@ -2674,3 +2674,17 @@ test( "Check order of focusin/focusout events", 2, function() {
input.off(); input.off();
}); });
test( "String.prototype.namespace does not cause trigger() to throw (#13360)", function() {
expect( 1 );
var errored = false;
String.prototype.namespace = function() {};
try {
jQuery("<p>").trigger("foo.bar");
} catch( e ) {
errored = true;
}
equal( errored, false, "trigger() did not throw exception" );
delete String.prototype.namespace;
});