В какой степени Shadow DOM можно эмулировать, используя полифилл?

Может ли черновой DOM W3C черновик быть заполнен в JavaScript, предоставляя пользовательские функции для поиска и обхода DOM? Это было сделано? Попытки, которые я нашел, были довольно кроткими шайбами ​​и, похоже, не прилагали особых усилий для подражания спецификации.

Я ценю, что это нелегкая задача, но наверняка кто-то внимательно ее рассмотрел?

1 ответ

Решение

Я работал над этой проблемой в течение последних нескольких месяцев.

Суть в том, что здесь есть polyfill, который работает ^ в вечнозеленых браузерах https://github.com/Polymer/ShadowDOM

^ Полифиляция CSS-функций, таких как @host, еще не добавлена

Так что, да, это сложная вещь для заполнения, особенно потому, что мы должны изобрести вторичные деревья DOM. Мы постарались сделать его максимально удобным для пользователя, что потребовало использования довольно инвазивной технологии обертки.

Другими словами, если вы div = document.createElement('div')вы получаете вещь, которая выглядит как DIV и работает как DIV, но на самом деле является объектом Wrapper. Конечная цель, конечно, состоит в том, чтобы ваш код выглядел одинаково, независимо от того, выполняется ли он в полифилле или в собственной реализации.

Это не 100% пуленепробиваемый, в частности, мы не можем обернуть document для вас, так что вы должны сделать это сами, а-ля:

wrap(document).querySelector(...)

Кроме document вопрос, обертки предназначены для прозрачной работы. Это все совершенно новое, поэтому я прошу прощения за отсутствие документов. Мы работаем над этим, как мы говорим.

Пожалуйста, присылайте вопросы, если у вас есть вопросы или проблемы, мы хотели бы получить обратную связь. Существует также канал электронной почты для обсуждения этого полифилла (и других полифиллов в этой организации) по адресу poly-dev@googlegroups.com.

Я сомневаюсь, что этот материал широко реализован

Правда, но это по крайней мере в Chrome.

Другие вопросы по тегам