Вот функция, которую мы используем в pure.js :
function outerHTML(node){
return node.outerHTML || new XMLSerializer().serializeToString(node);
}
Чтобы использовать DOM-способ:
outerHTML(document.getElementById('theNode'));
И работает кросс-браузер
РЕДАКТИРОВАТЬ: ВНИМАНИЕ!
Проблема с XMLSerializer: он генерирует строку XML (XHTML).
Это означает, что вы можете получить теги типа <div class="team" />
вместо
<div class="team"></div>
Некоторым браузерам это не нравится. Недавно у меня были проблемы с Firefox 3.5.
Итак, для нашей pure.js
библиотеки мы вернулись к старому и безопасному пути:
function outerHTML(node){
// if IE, Chrome take the internal method otherwise build one
return node.outerHTML || (
function(n){
var div = document.createElement('div'), h;
div.appendChild( n.cloneNode(true) );
h = div.innerHTML;
div = null;
return h;
})(node);
}