diff options
author | Rick Waldron <waldron.rick@gmail.com> | 2011-07-25 17:06:38 -0400 |
---|---|---|
committer | Rick Waldron <waldron.rick@gmail.com> | 2011-07-25 17:06:38 -0400 |
commit | ad16db370e3a18819c9dea0f0e09495bafddd13c (patch) | |
tree | bbf14ee3c2da2d6dd7071eda561ae40050efd1ae | |
parent | 27291ff06ddb655f90a8d1eada71f7ac61499b12 (diff) | |
download | jquery-ad16db370e3a18819c9dea0f0e09495bafddd13c.tar.gz jquery-ad16db370e3a18819c9dea0f0e09495bafddd13c.zip |
Wrap obj.constructor test in try/catch. Thanks to bkrausz. Fixes #9897
-rw-r--r-- | src/core.js | 13 | ||||
-rw-r--r-- | test/unit/core.js | 9 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/core.js b/src/core.js index 715d73ad3..f10d9edea 100644 --- a/src/core.js +++ b/src/core.js @@ -500,10 +500,15 @@ jQuery.extend({ return false; } - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 return false; } diff --git a/test/unit/core.js b/test/unit/core.js index 8c285f6dd..7599455df 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -290,7 +290,7 @@ test("type", function() { }); test("isPlainObject", function() { - expect(14); + expect(15); stop(); @@ -332,6 +332,13 @@ test("isPlainObject", function() { ok(!jQuery.isPlainObject(window), "window"); try { + jQuery.isPlainObject( window.location ); + ok( true, "Does not throw exceptions on host objects"); + } catch ( e ) { + ok( false, "Does not throw exceptions on host objects -- FAIL"); + } + + try { var iframe = document.createElement("iframe"); document.body.appendChild(iframe); |