JSPM

  • Created
  • Published
  • Downloads 48286458
  • Score
    100M100P100Q226776F

handler for htmlparser2 that turns pages into a dom

Package Exports

  • domhandler
  • domhandler/lib/node

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (domhandler) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

#DOMHandler Build Status

The DOM handler (formally known as DefaultHandler) creates a tree containing all nodes of a page. The tree may be manipulated using the DOMUtils library.

##Usage

var handler = new DomHandler([ <func> callback(err, dom), ] [ <obj> options ]);
// var parser = new Parser(handler[, options]);

##Example

var htmlparser = require("htmlparser2");
var rawHtml = "Xyz <script language= javascript>var foo = '<<bar>>';< /  script><!--<!-- Waah! -- -->";
var handler = new htmlparser.DomHandler(function (error, dom) {
    if (error)
        [...do something for errors...]
    else
        [...parsing done, do something...]
        console.log(dom);
});
var parser = new htmlparser.Parser(handler);
parser.write(rawHtml);
parser.done();

Output:

[{
    data: 'Xyz ',
    type: 'text'
}, {
    type: 'script',
    name: 'script',
    attribs: {
        language: 'javascript'
    },
    children: [{
        data: 'var foo = \'<bar>\';<',
        type: 'text'
    }]
}, {
    data: '<!-- Waah! -- ',
    type: 'comment'
}]

##Option: normalizeWhitespace Indicates whether the whitespace in text nodes should be normalized (= all whitespace should be replaced with single spaces). The default value is "false".

The following HTML will be used:

<font>
    <br>this is the text
<font>

###Example: true

[{
    type: 'tag',
    name: 'font',
    children: [{
        data: ' ',
        type: 'text'
    }, {
        type: 'tag',
        name: 'br'
    }, {
        data: 'this is the text ',
        type: 'text'
    }, {
        type: 'tag',
        name: 'font'
    }]
}]

###Example: false

[{
    type: 'tag',
    name: 'font',
    children: [{
        data: '\n\t',
        type: 'text'
    }, {
        type: 'tag',
        name: 'br'
    }, {
        data: 'this is the text\n',
        type: 'text'
    }, {
        type: 'tag',
        name: 'font'
    }]
}]