]> source.dussan.org Git - jquery.git/commitdiff
Core: Make isAttached work with iOS 10.0-10.2
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Mon, 29 Apr 2019 17:54:12 +0000 (19:54 +0200)
committerGitHub <noreply@github.com>
Mon, 29 Apr 2019 17:54:12 +0000 (19:54 +0200)
The test for Shadow DOM v1 support has been changed to rely on the presence of
`documentElement.getRootNode` as iOS 10.0-10.2 supports `attachShadow` but
doesn't support `getRootNode`.

No new test is necessary - iOS 10.0 fails lots of our test suite because of
this bug.

Fixes gh-4356
Closes gh-4360

src/core/isAttached.js
test/unit/css.js
test/unit/effects.js

index efa2465a9aa87e4a2a2013864c844267eced0106..bd525194a7a2789b5deb050a17890fd61920f71e 100644 (file)
@@ -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;
index e7acd191506ab268bc08369490c4ec9d886b4a5d..13de4704bfb27645125e838fbfd387a4d2ed2a94 100644 (file)
@@ -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" );
index f71eafb62cd9528f7bc2015a90b88573cfae8246..ba11eabf50470738fb4b47018e6440d2522bc4e6 100644 (file)
@@ -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" );