From 90f78b9aab9c99ff3ffcccb1db602670e9707fa0 Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Wed, 8 May 2019 10:12:36 +0200 Subject: 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. (cherry-picked from ccbd6b93424cbdbf86f07a86c2e55cbab497d7a3) Closes gh-4390 Ref gh-4384 Ref gh-4385 --- src/traversing.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/traversing.js b/src/traversing.js index 25843ee8c..afbecc4f4 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; } -- cgit v1.2.3