Да. Когда вы используете innerHTML
, браузер воссоздает HTML на основе элементов DOM и атрибутов в элементе. Разные браузеры делают это по-разному, потому что до недавнего времени не было никакого стандарта (innerHTML
было новшеством Microsoft, которое было принято почти всеми остальными и стандартизировано в HTML5 ). Если ваша разметка выглядит так:
<span style="color: red" id="foo">...</span>
IE innerHTML
для этого будет:
<SPAN id=foo style="COLOR: red">...</SPAN>
... тогда как Firefox и Chrome довольно близки к вашему оригиналу.
То, что дает вам IE, это действительный HTML (вы можете опускать кавычки в атрибутах, в которых нет пробелов, и с тэгами UPPER CASE тоже все в порядке), но не в допустимый XHTML (если это важно для того, что вы делаешь).
Вы можете создать свою собственную (X) строку HTML, если хотите, самостоятельно пройдясь по дереву DOM или обработав результат IE.
Хорошая новость заключается в том, что теперь, когда innerHTML
является стандартизированным , и в стандарте четко сказано, что результатом должен быть действительный XML в документе XML (какими являются документы XHTML), и поскольку Microsoft является Более заинтересованный и преданный стандартам в этой области, чем они были в течение многих лет, вероятно, IE9 будет лучше в этом отношении.