В настоящее время единственный способ заполнить фрагмент документа, используя только строку, - создать временный объект и выполнить цикл по дочерним элементам, чтобы добавить их к фрагменту.
- Поскольку он не добавляется кдокумент не визуализируется, поэтому производительность не снижается.
- Вы видите цикл, но он проходит только по первым дочерним элементам.В большинстве документов есть только несколько элементов с полукорнями, поэтому это тоже не проблема.
Если вы хотите создать целый документ, используйте взамен DOMParser.Посмотрите на этот ответ .
Код:
var frag = document.createDocumentFragment(),
tmp = document.createElement('body'), child;
tmp.innerHTML = '<div>x</div><span>y</span>';
while (child = tmp.firstElementChild) {
frag.appendChild(child);
}
Однострочник (две строки для удобства чтения) (ввод: String html
, вывод: DocumentFragment frag
):
var frag =document.createDocumentFragment(), t=document.createElement('body'), c;
t.innerHTML = html; while(c=t.firstElementChild) frag.appendChild(c);