aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/isAttached.js6
-rw-r--r--test/unit/css.js12
-rw-r--r--test/unit/effects.js7
3 files changed, 20 insertions, 5 deletions
diff --git a/src/core/isAttached.js b/src/core/isAttached.js
index efa2465a9..bd525194a 100644
--- a/src/core/isAttached.js
+++ b/src/core/isAttached.js
@@ -10,8 +10,12 @@ define( [
},
composed = { composed: true };
+ // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
// Check attachment across shadow DOM boundaries when possible (gh-3504)
- if ( documentElement.attachShadow ) {
+ // Support: iOS 10.0-10.2 only
+ // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
+ // leading to errors. We need to check for `getRootNode`.
+ if ( documentElement.getRootNode ) {
isAttached = function( elem ) {
return jQuery.contains( elem.ownerDocument, elem ) ||
elem.getRootNode( composed ) === elem.ownerDocument;
diff --git a/test/unit/css.js b/test/unit/css.js
index e7acd1915..13de4704b 100644
--- a/test/unit/css.js
+++ b/test/unit/css.js
@@ -641,7 +641,11 @@ QUnit.test( "show/hide detached nodes", function( assert ) {
span.remove();
} );
-QUnit[ document.body.attachShadow ? "test" : "skip" ]( "show/hide shadow child nodes", function( assert ) {
+QUnit[
+ document.body.attachShadow && document.body.getRootNode ?
+ "test" :
+ "skip"
+ ]( "show/hide shadow child nodes", function( assert ) {
assert.expect( 28 );
jQuery( "<div id='shadowHost'></div>" ).appendTo( "#qunit-fixture" );
var shadowHost = document.querySelector( "#shadowHost" );
@@ -1023,7 +1027,11 @@ QUnit[ jQuery.find.compile && jQuery.fn.toggle ? "test" : "skip" ]( "detached to
"cascade-hidden element in detached tree" );
} );
-QUnit[ jQuery.find.compile && jQuery.fn.toggle && document.body.attachShadow ? "test" : "skip" ]( "shadow toggle()", function( assert ) {
+QUnit[ jQuery.find.compile && jQuery.fn.toggle &&
+ document.body.attachShadow && document.body.getRootNode ?
+ "test" :
+ "skip"
+]( "shadow toggle()", function( assert ) {
assert.expect( 4 );
jQuery( "<div id='shadowHost'></div>" ).appendTo( "#qunit-fixture" );
var shadowHost = document.querySelector( "#shadowHost" );
diff --git a/test/unit/effects.js b/test/unit/effects.js
index f71eafb62..ba11eabf5 100644
--- a/test/unit/effects.js
+++ b/test/unit/effects.js
@@ -221,8 +221,11 @@ supportjQuery.each( hideOptions, function( type, setup ) {
assert.expectJqData( this, $span, "olddisplay" );
} );
- QUnit[ document.body.attachShadow ? "test" : "skip" ](
- "Persist correct display value - " + type + " hidden, shadow child", function( assert ) {
+ QUnit[
+ document.body.attachShadow && document.body.getRootNode ?
+ "test" :
+ "skip"
+ ]( "Persist correct display value - " + type + " hidden, shadow child", function( assert ) {
assert.expect( 3 );
jQuery( "<div id='shadowHost'></div>" ).appendTo( "#qunit-fixture" );