From: Rick Waldron Date: Mon, 25 Jul 2011 21:06:38 +0000 (-0400) Subject: Wrap obj.constructor test in try/catch. Thanks to bkrausz. Fixes #9897 X-Git-Tag: 1.6.3rc1~5^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ad16db370e3a18819c9dea0f0e09495bafddd13c;p=jquery.git Wrap obj.constructor test in try/catch. Thanks to bkrausz. Fixes #9897 --- 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(); @@ -331,6 +331,13 @@ test("isPlainObject", function() { // Window 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);