Странное поведение DocumentFragment.innerHTML на разных сайтах - PullRequest
0 голосов
/ 03 марта 2019

Не могли бы вы помочь мне понять, почему это происходит?

Выполните следующие шаги, чтобы воспроизвести поведение:

1) Перейдите на любую страницу видео YouTube, например this

2) Дождитесь полной загрузки страницы, затем перейдите в консоль и скопируйте весь HTML-код в виде строки (document.documentElement.outerHTML)

3) Затем выполните следующий код на YouTube ина любом другом веб-сайте (например, это ).(COPIED_MARKDOWN это шаг 2)

var fragment = document.createDocumentFragment();
var tmp = fragment.appendChild(document.createElement("div") );
tmp.innerHTML = COPIED_MARKDOWN;
var target = tmp.querySelector('#page-manager')
console.log(target)

Результат:

1) Когда вы выполните приведенный выше код на YouTube, вы увидите дерево узлов HTML, но <ytd-page-manager id="page-manager" class="style-scope ytd-app">не будет детей(скриншот № 1)

2) Когда вы выполните приведенный выше код на другом сайте, вы увидите дерево узлов html, и у <ytd-page-manager id="page-manager" class="style-scope ytd-app"> будут дочерние элементы (скриншот № 2)

Также вы можете скачать мое маленькое расширение Chrome и загрузить его на обоих сайтах, чтобы пропустить шаги выше

Расширение: https://ufile.io/uy3pg

Экран № 1: http://joxi.ru/YmEzvLOH0dwV82

Экран №2: http://joxi.ru/D2Pzv1qHpQqykr

Я тестировал его только на Chrome: версия 71.0.3578.98 (официальная сборка) (64-разрядная версия)

...