From ccbd6b93424cbdbf86f07a86c2e55cbab497d7a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Wed, 8 May 2019 10:12:36 +0200 Subject: [PATCH] Traversing: Fix `contents()` on ``s with children in IE The original fix didn't account for the fact that in IE `` elements with no `data` attribute have an object `contentDocument`. The fix leverages the fact that this special object has a null prototype. Closes gh-4390 Ref gh-4384 Ref gh-4385 --- src/traversing.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/traversing.js b/src/traversing.js index a91183b28..72530ed85 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -1,5 +1,6 @@ define( [ "./core", + "./var/getProto", "./var/indexOf", "./traversing/var/dir", "./traversing/var/siblings", @@ -9,7 +10,7 @@ define( [ "./core/init", "./traversing/findFilter", "./selector" -], function( jQuery, indexOf, dir, siblings, rneedsContext, nodeName ) { +], function( jQuery, getProto, indexOf, dir, siblings, rneedsContext, nodeName ) { "use strict"; @@ -145,7 +146,13 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - if ( elem.contentDocument != null ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + return elem.contentDocument; } -- 2.39.5