В общем, можем ли мы считать HTML-документ, который изначально недействителен, но в конечном счете становится технически допустимым (с помощью сценариев), допустимым?
«ОК» будет соответствовать передовой практике или, возможно, стандарту, если он отвечает на этот вопрос.
Например, документ, полученный в результате синтаксического анализа этой сериализованной HTML-разметки, сначала проверяется с использованием валидатора W3:
<!DOCTYPE html>
<title>foo</title>
bar
В то время как это не:
<!DOCTYPE html>
<script>document.title = 'foo'</script>
bar
И это несмотря на то, что результат одинаков для любого браузера, поддерживающего Javascript. Предполагая, что это веб-приложение и требуется JS, это нормально?
Меня особенно удивляет эта ситуация, когда у нас нет правильного (с точки зрения приложения) способа изначально удовлетворить стандарту. Например, что, если мы изначально не знаем название документа и должны вычислить/получить его с помощью скрипта?
В этом конкретном случае использование заполнителя кажется неправильным:
<!DOCTYPE html>
<title>placeholder</title>
<script>document.title = 'foo'</script>
bar
(Обратите внимание, что оставление элемента заголовка пустым все равно считается недействительным.)
Итак, не вдаваясь в подробности об элементе title, скажем, в целом принято распространять HTML-ресурсы, которые действительны только в конечном итоге?
Подвопрос: я понимаю, что проверка документа (представленного DOM) и проверка его сериализованной разметки — это две разные вещи; есть ли инструменты для первого? (Либо из моментального снимка модели DOM, либо "непрерывно".) Пример:
<!DOCTYPE html>
<title>foo</title>
<script>document.title = ''</script>
bar
Первоначально это проверяется, но технически приводит к недействительному документу без какого-либо очевидного способа его обнаружить.
Обновление: очевидно, что такой инструмент будет иметь ограниченную ценность в контексте статического анализа (проблема остановки и т. д.). Однако инструмент времени выполнения должен быть полезен.
Обновление: спецификация W3C для проверки DOM (уровень 3) а>.
Обновление: спецификация W3C для Service Workers, которая выглядит как его можно использовать, чтобы убедиться, что DOM действителен перед визуализацией, даже если шаблон не является таковым (избегая использования элементов-заполнителей и т. д.). На момент написания этой статьи еще рано (26 июня 2014 года, так что не цитируйте меня по этому поводу).
title
может оказаться совершенно уникальным. Оказывается, я действительно хочу запустить код перед рендерингом, что в настоящее время невозможно, насколько я знаю. - person tne   schedule 10.09.2013