QuirksMode и реализация JavaScript - PullRequest
3 голосов
/ 01 октября 2009

Я хотел бы спросить, имеет ли Internet Explorer в QuirksMode реализацию JavaScript, отличную от IE в обычном режиме (когда правильно задан тип документа).

Возможно ли, что код JavaScript будет вести себя по-другому в QuirksMode и в обычном режиме IE?

Ответы [ 3 ]

10 голосов
/ 01 октября 2009

Да .

Одним из наиболее заметных отличий является то, что в режиме причуд BODY (document.body) считается корневым элементом , тогда как в стандартном режиме (и так, как это должно быть) - корневым элементом такое HTML (document.documentElement).

Это, например, влияет на способ вычисления размеров области просмотра ; в стандартном режиме можно использовать document.documentElement.clientHeight, а в причудах - document.body.clientHeight - для получения высоты области просмотра.

Обнаружить это поведение легко - document.documentElement.clientHeight == 0 - скажет нам, что documentElement является не корневым элементом , и вместо этого следует использовать тело.

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

6 голосов
/ 01 октября 2009

JavaScript не должен вести себя иначе; однако объекты DOM, с которыми работает JavaScript, могут иметь различное поведение.

3 голосов
/ 01 октября 2009

Это, безусловно, имеет место в Internet Explorer 8, где полный режим стандартов больше не получает <a name="foo"> при запросе document.getElementById('foo') и где (IIRC) setAttribute и друзья исправлены.

...