Задам вопрос здесь, чтобы не плодить темы.
Писал функционал для создания ДОМ узлов, поудобнее страндартного, на его основе. И возвращает он documentFragment, так как есть возможность за раз вернуть несколько элементов в него запакованных. Но нужна была возможность преобразовывать DOM Элемент в хтмл и я сначала сделал так
//корневой элемент, который я буду возвращать
chest = document.createDocumentFragment();
//создаем тут все дерево в зависимости от параметров
//***************
//в конце
chest.html = function(){
var div = document.createElement("DIV");
div.appendChild(this);
return div.innerHTML;
}
return chest;
Но по вставке фрагмента в узел, он исчезает. Вопрос в том, куда девается метод html() ? Удаляется garbage collector -ом?
Пока я этого не понял я еще так попробовал
Object.prototype.html = function(){
if(!this.nodeType){
return "";
}
var div = document.createElement("DIV");
div.appendChild(this);
return div.innerHTML;
}
Проверил на html элементах, работает нормально. Не стал проверять nodeType == 1 или 3, вдруг коммент захочется создать (8) или еще чего (не знаю зачем, просто интересно). Любую ли nodeType можно appendChild ?
И как как правильнее проверить Object что это XML node? (Жалко что нет прототипа у хтмл элементов в IE)