diff options
-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 85a381661..594910df5 100644 --- a/src/core.js +++ b/src/core.js @@ -502,10 +502,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 a6783e02e..fdf0ceb5e 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); |