DOMNode represents a node in the DOM tree. It is constructed from a payload
similar to {DOM.Node} and supports all basic tree operations. If a node has
a nodeId it is registered with the DOMAgent
via addNode()
. The node's
sourceOffset and sourceLength is stored as its location and length. Nodes can
iterated using each()
or find()
. dump
shows the entire tree on the console.
Constructor
var DOMNode = function DOMNode(agent, payload) {
this.agent = agent;
this.children = [];
this.attributes = {};
// set the payload
if (typeof payload === "string") {
payload = DOMHelpers.extractPayload(payload);
}
if (payload) {
this.setPayload(payload);
}
this.agent.addNode(this);
};
var TYPE_ELEMENT = DOMNode.TYPE_ELEMENT = 1; // element node
var TYPE_ATTRIBUTE = DOMNode.TYPE_ATTRIBUTE = 2; // attribute node (unused)
var TYPE_TEXT = DOMNode.TYPE_TEXT = 3; // text node
var TYPE_COMMENT = DOMNode.TYPE_COMMENT = 8; // comment node <!-- -->
var TYPE_DOCUMENT = DOMNode.TYPE_DOCUMENT = 9; // document node <!DOCUMENT>
Fill a string to the given length (used for debug output)
function _fill(string, length, c) {
if (c === undefined) {
c = " ";
}
while (string.length < length) {
string += c;
}
return string;
}
Construct a find condition (used in find
and findParent
)
The match can be a callback returning true or false, the node
name or the node type.
function _makeFindCondition(match) {
switch (typeof match) {
case "function":
return match;
case "string":
return function findCondition(name, node) {
return node.name === name;
}.bind(undefined, match.toUpperCase());
case "number":
return function findCondition(type, node) {
return node.type === type;
}.bind(undefined, match);
default:
console.error("Invalid find condition: " + match);
}
}