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.
(cherry picked from commit f005af54e4)
This commit is contained in:
Andrew Plummer
2013-01-31 12:01:34 -06:00
committed by Corey Frang
parent d3a2ef7cfe
commit d654914fd0
2 changed files with 16 additions and 2 deletions

View File

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

View File

@@ -2663,3 +2663,17 @@ test( "Check order of focusin/focusout events", 2, function() {
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;
});