При использовании методов создания DOM необходимо предполагать, что вы хотите, чтобы структура была такой, как вы ее создали.
Если вы хотите обеспечить одинаковую структуру в разных браузерах, то да, вы всегда должны добавлять ее вручную, даже если JavaScript анализирует HTML. Не надейтесь на браузер, чтобы вставить его для вас, потому что браузеры могут вести себя не так в этом отношении.
Вот пример , который вы можете запустить в Firefox.
Он начинается с этой неверной разметки.
<p>
<div>original</div>
</p>
<div>
удаляется из <p>
при разборе HTML, оставляя его визуализированным вот так ...
<p></p>
<div>original</div>
<p></p>
Но если мы создаем идентичную структуру с помощью методов DOM, Firefox не вносит никаких исправлений.
var p = document.createElement('p');
p.appendChild(document.createElement('div'))
.appendChild(document.createTextNode('new'));
document.body.appendChild(p);
Таким образом, в результате DOM теперь это ...
<p></p>
<div>original</div>
<p></p>
<p>
<div>new</div>
</p>
Таким образом, вы можете видеть, что даже в случае совершенно недопустимой структуры он не вносит исправления, которые вы увидите при анализе HTML.
В конечном итоге, вам не следует полагаться на обычные настройки или исправления браузера, поскольку нет гарантии, что они будут одинаковыми в разных браузерах.
Используйте правильно структурированный и корректный HTML, и вы избежите проблем.