Выбор DOCTYPE влияет на DOM, как замечено кодом JavaScript?

Я все еще иногда использую старый Hex-редактор по имени A.X.E., Усовершенствованный Hex-редактор. Это, кажется, в основном исчезло из Интернета теперь, хотя Google должен все еще быть в состоянии найти его для Вас. Последняя версия, о которой я знаю, была версией 3.4, но я действительно только использовал free-for-personal-use версию 2.1.

Ее самая интересная функция, и тот, который у меня была большая часть использования для дешифровки различной игры и графических форматов, ее графический режим представления. Это в основном просто показывает Вам, файл с каждым байтом превратился в пиксель, на который наносят цветную маркировку. И столь же простой, как это звучит, это предпринимало мои попытки инженерного анализа, намного легче время от времени.

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

более поздняя версия имеет некоторые функции, которые кажутся, что они могли соответствовать Вашим потребностям (сценарии, средство поиска регулярности, генератор грамматики), но я понятия не имею, насколько хороший они.

5
задан Joergen Bech 10 September 2009 в 07:46
поделиться

2 ответа

Будет ли изменение DOCTYPE нарушить работу каких-либо функций javascript, на самом деле зависит от того, насколько эти функции предназначены для защиты:)

Например, когда документ отображается в режиме quirks , document.body (BODY) становится так называемым «корневым элементом»; при визуализации в стандартном режиме этот корневой элемент обычно представляет собой document.documentElement (HTML). Это довольно существенное различие. Если скрипт, определяющий размер экрана браузера, всегда запрашивает свойства clientWidth / clientHeight из document.documentElement , он, очевидно, будет сообщать о неверных результатах в режиме совместимости (поскольку, IIRC, document.documentElement.clientWidth / clientHeight будет представлять размеры элемента HTML, а не экранные).

В большинстве JS-библиотек обычно явно указывается, поддерживается ли режим quirksmode (мы - Prototype.js - например, не поддерживаем режим quirks).

Говоря о HTML vs XHTML , чтобы браузер мог отображать документ как XHTML, вы должны прежде всего обслужить его с правильным заголовком «Content-type» (т.е. application / xhtml + xml). Если вы измените тип документа только на XHTML, но по-прежнему будете обслуживать документ как «text / html», большинство известных мне браузеров все равно будут анализировать (и отображать) его как документ HTML .

Обратите внимание, что на сегодняшний день, IE не понимает «реальное» содержимое XHTML, поэтому рекомендуется использовать документы в формате text / html (с типом документа HTML4.01) (если, конечно, IE не входит в число поддерживаемых браузеров).

Как что касается особенностей DOM в "реальном" Документы XHTML, я слышал, что некоторые вещи, такие как document.write «не работают» и что доступ к атрибутам узла всегда должен выполняться через getAttribute / setAttribute (а не через более простой аксессоры собственности). IIRC, есть также некоторые проблемы с innerHTML .

Отсутствие информации о DOM в «реальных» документах XHTML, вероятно, связано с его непрактичностью в документах / приложениях для общего доступа в Интернет (т.е. отсутствие поддержки IE за это).

6
ответ дан 14 December 2019 в 08:55
поделиться

Если вы используете DTD:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

, то ваш сайт находится в режим quirks в IE и почти стандартный режим в современных браузерах, и поскольку переходный dtd xhtml 1.0 заставляет страницу переходить в стандартный режим, возникнут проблемы с макетом и потенциальные проблемы в Javascript (особенно в IE), поскольку есть некоторые существенные различия между тем, как DOM отображается в причудах и стандартах.

Однако, если HTML 4.01 DTD содержит идентификатор системы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

Он уже должен быть в стандартном режиме. Вы можете проверить, запросив 'document.compatMode' на своем сайте, он скажет 'CSS1Compat', если он в стандартах, иначе 'BackCompat', если в режиме quirks.

Я предполагаю, что вы собираетесь обслуживать Content- Тип текста / HTML с переходным XHTML 1.0.

1
ответ дан 14 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: