diff options
author | Andrew Plummer <plummer.andrew@gmail.com> | 2013-01-31 12:01:34 -0600 |
---|---|---|
committer | Corey Frang <gnarf@gnarf.net> | 2013-01-31 12:01:34 -0600 |
commit | f005af54e4983658e3ae504111885921c4dca383 (patch) | |
tree | dde4b1312d6c477d3a1d043ef96d237e54e5937e | |
parent | d79bf3517eda9b74883c68c255e82067449d3274 (diff) | |
download | jquery-f005af54e4983658e3ae504111885921c4dca383.tar.gz jquery-f005af54e4983658e3ae504111885921c4dca383.zip |
event: Stricter type checking in trigger - Fixes #13360 - Closes gh-1153
Squashed commit of the following:
commit 5935a362c75ecef04d5ec9775cbcaf2165921e8d
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.
-rw-r--r-- | src/event.js | 4 | ||||
-rw-r--r-- | test/unit/event.js | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/event.js b/src/event.js index 3d085d2ef..4681140be 100644 --- a/src/event.js +++ b/src/event.js @@ -207,8 +207,8 @@ jQuery.event = { var handle, ontype, cur, bubbleType, special, tmp, i, 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; diff --git a/test/unit/event.js b/test/unit/event.js index b252a4654..c3239f902 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2674,3 +2674,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; +}); |