It's like outerHTML
, but it works with:
- DOM elements
- Text nodes
- Attributes
- Comment nodes
- Documents
- DocumentFragments
- Doctypes
- NodeLists / Arrays
For custom serialization logic, a "serialize" event is dispatched on
every Node
which event listeners can override the default behavior on by
setting the event.detail.serialize
property to a String or other Node.
$ npm install dom-serialize
var serialize = require('dom-serialize');
var node;
// works with Text nodes
node= document.createTextNode('foo & <bar>');
console.log(serialize(node));
// works with DOM elements
node = document.createElement('body');
node.appendChild(document.createElement('strong'));
node.firstChild.appendChild(document.createTextNode('hello'));
console.log(serialize(node));
// custom "serialize" event
node.firstChild.addEventListener('serialize', function (event) {
event.detail.serialize = 'pwn';
}, false);
console.log(serialize(node));
foo & <bar>
<body><strong>hello</strong></body>
<body>pwn</body>