Является ли DOCTYPE релевантным только для разметки или для DOM?
До какого уровня абстракции остается объявление <!DOCTYPE>
(и тип содержимого) документа?
Например, если я работаю с XHTML, но хочу использовать элемент, который недоступен в XHTML - легким примером является iframe - было бы плохой практикой, чтобы программно добавить элемент с JavaScript? Или я либо не должен использовать iframe, либо не использовать XHTML?
Валидатор все равно будет проверять документ - поскольку он не выполняет JS - но есть ли что-то теоретически неправильное при модификации DOM, поэтому он больше не соответствует <!DOCTYPE>
(и возвращенному типу содержимого), или <!DOCTYPE>
относится только к разметке, когда она находится в текстовой форме?
Добавление
Чтобы быть более конкретным, мой вопрос заключается не в том, как <!DOCTYPE>
повлияет на JavaScript, так и на то, как будет работать JavaScript, но как он должен влиять на выбор разработчиков в отношении добавления и удаления и изменения элементов программным образом.
Моим примером является то, что клиент как хочет соответствия XHTML, так и редакторов WYSIWYG, что вы делаете с iframe, который часто приходит с редакторами WYSIWYG? Следует ли удалить его из разметки, только до document.appendChild()
в JS? Или вы говорите своему клиенту, что им нужно выбирать между двумя - iframe или XHTML?
Ответы
Ответ 1
Eesh, я вижу вашу мысль. Если у вас есть один из тех клиентов, который считает, что веб-страница не является хорошей, если ее не XHTML, может быть сложно говорить об этом.
Однако стоит попробовать: кажется бессмысленным тратить время на написание JavaScript, чтобы вставлять элементы, которые являются действительными в XHTML, а не просто использовать doctype, который позволяет создавать элементы.
<iframe>
все еще разрешен в XHTML 1.0 Transitional, хотя, не так ли? Это вариант?
Ответ 2
Определение DOCTYPE в стандартном выражении описывает разметку. Таким образом, когда разметка была проанализирована пользовательским агентом, DOCTYPE в этом отношении не имеет значения. С практической точки зрения DOCTYPE также запускает поведение браузера, поэтому то, что вы делаете с DOM динамически, таким образом влияет на DOCTYPE.
Ответ 3
Я никоим образом не являюсь фанатом правил или стандартов, но вставка HTML-элементов в doctype, который не поддерживает этот элемент, является глупым, потому что это может привести к тонким проблемам по пути, который невозможно отладить.
Итак: Вероятно, это сработает и не будет проблемой. (Ваш босс или клиент никогда не узнают, поскольку валидатор может работать только на базовом HTML).
Я по-прежнему не рекомендую это делать.