CSS и инструкции по обработке
У меня есть HTML-документ, который содержит инструкции по обработке и должен быть оформлен с использованием CSS. Я не нашел способа обратиться к инструкциям по обработке из CSS. Это возможно?
<div>
Hello World
<?pi1 ?>
Test
<?pi2 ?>
</div>
2 ответа
Нет. Браузеры будут воспринимать их как фиктивные комментарии, поэтому в DOM они будут узлами комментариев. Селекторы CSS совпадают с узлами элемента, поэтому инструкции по обработке не могут быть ссылочными
Другой ответ верен, указывая на то, что анализ HTML никогда не будет генерировать узлы инструкций обработки. Это описано (по состоянию на апрель 2023 г.) HTML LS §13.2.5.6 . Однако такие узлы по-прежнему можно создавать и вставлять в дерево DOM динамически во время выполнения, используя createProcessingInstruction
и appendChild
или insertBefore
. Они даже появятся в.innerHTML
родительских узлов, даже если они не будут проходить без потерь при анализе HTML. Они по-прежнему полностью поддерживаются в XML DOM.
Тем не менее, узлы инструкций обработки, такие как узлы комментариев, не будут участвовать в стилизации, даже если они вставлены динамически. Таким образом, не существует селекторов CSS, которые могли бы их выбрать, даже вquerySelectorAll
. Однако узлы инструкций обработки могут выбираться с помощью выражений XPath , что поддерживается и createExpression
:
Неприятное осложнение: по состоянию на апрель 2023 г.evaluate
не работает на узлах в основных браузерах (Firefox ESR 102 и Chromium 111). Или, скорее,DocumentFragment
нельзя использовать в качестве узла контекста, хотя его можно выбрать с помощью таких запросов, как..
или/
. Попытки создадутDOMException
. Отрегулируйте соответствующим образом.