aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2019-05-08 10:12:36 +0200
committerGitHub <noreply@github.com>2019-05-08 10:12:36 +0200
commitccbd6b93424cbdbf86f07a86c2e55cbab497d7a3 (patch)
treed5a0c94b0bd71dded4750873dc9d0491ecc177a1
parent4d865d96aa5aae91823c50020b5c19da79566811 (diff)
downloadjquery-ccbd6b93424cbdbf86f07a86c2e55cbab497d7a3.tar.gz
jquery-ccbd6b93424cbdbf86f07a86c2e55cbab497d7a3.zip
Traversing: Fix `contents()` on `<object>`s with children in IE
The original fix didn't account for the fact that in IE `<object>` 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
-rw-r--r--src/traversing.js11
1 files 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+
+ // <object> elements with no `data` attribute has an object
+ // `contentDocument` with a `null` prototype.
+ getProto( elem.contentDocument ) ) {
+
return elem.contentDocument;
}