Следующий исходный код предупреждает о следующих результатах:
Internet Explorer 7 : 29
Firefox 3.0.3 : 37 (правильно)
Safari 3.0.4 (523.12.9) : 38
Google Chrome 0.3.154.9 : 38
Пожалуйста, игнорируйте следующие факты:
- Браузеры Webkit (Safari / Chrome) вставляют дополнительный текстовый узел в конец тега body
- В Internet Explorer нет новых строк в узлах пробелов, как они должны.
- Internet Explorer не имеет начального узла пробела (перед тегом есть очевидные пробелы, но нет текстового узла для сопоставления)
Из тегов на тестовой странице следующие теги не имеют пробельных текстовых узлов, вставленных в DOM после них: form
, input[@radio]
, div
, span
, table
, ul
, a
.
Мой вопрос: Что в этих узлах делает их исключением в Internet Explorer? Почему после этих узлов пробелы не вставляются, а вставляются в другие?
Это поведение то же самое, если вы переключаете порядок тегов, переключаете doctype на XHTML (при сохранении режима стандартов).
Вот ссылка , которая дает небольшую справочную информацию , но не является идеальным решением. Возможно, не существует решения этой проблемы, мне просто интересно поведение.
Спасибо интернету,
Zach
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function countNodes()
{
alert(document.getElementsByTagName('body')[0].childNodes.length);
}
</script>
</head>
<body onload="countNodes()">
<form></form>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="text"/>
<input type="password"/>
<input type="file"/>
<input type="hidden"/>
<input type="checkbox"/>
<input type="radio"/>
<button></button>
<select></select>
<textarea></textarea>
<div></div>
<span></span>
<table></table>
<ul></ul>
<a></a>
</body>
</html>