Voici la fonction que nous utilisons dans pure.js:
function outerHTML(node){
return node.outerHTML || new XMLSerializer().serializeToString(node);
}
Pour utiliser le DOM manière:
outerHTML(document.getElementById('theNode'));
Et il fonctionne de la croix-navigateurs
EDIT: ATTENTION!
Il y a un soucis avec XMLSerializer, il génère un XML(XHTML) de la chaîne.
Ce qui signifie que vous pouvez jusqu'à la fin avec les balises comme l' <div class="team" />
au lieu de
<div class="team"></div>
Certains navigateurs ne l'aime pas. J'ai eu quelques douleurs avec Firefox 3.5 récemment.
Donc, pour notre pure.js
lib, nous sommes revenus à l'ancien et du moyen sûr:
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);
}