|
var domWalk = require("dom-walk") |
|
|
|
var Comment = require("./dom-comment.js") |
|
var DOMText = require("./dom-text.js") |
|
var DOMElement = require("./dom-element.js") |
|
var DocumentFragment = require("./dom-fragment.js") |
|
var Event = require("./event.js") |
|
var dispatchEvent = require("./event/dispatch-event.js") |
|
var addEventListener = require("./event/add-event-listener.js") |
|
var removeEventListener = require("./event/remove-event-listener.js") |
|
|
|
module.exports = Document; |
|
|
|
function Document() { |
|
if (!(this instanceof Document)) { |
|
return new Document(); |
|
} |
|
|
|
this.head = this.createElement("head") |
|
this.body = this.createElement("body") |
|
this.documentElement = this.createElement("html") |
|
this.documentElement.appendChild(this.head) |
|
this.documentElement.appendChild(this.body) |
|
this.childNodes = [this.documentElement] |
|
this.nodeType = 9 |
|
} |
|
|
|
var proto = Document.prototype; |
|
proto.createTextNode = function createTextNode(value) { |
|
return new DOMText(value, this) |
|
} |
|
|
|
proto.createElementNS = function createElementNS(namespace, tagName) { |
|
var ns = namespace === null ? null : String(namespace) |
|
return new DOMElement(tagName, this, ns) |
|
} |
|
|
|
proto.createElement = function createElement(tagName) { |
|
return new DOMElement(tagName, this) |
|
} |
|
|
|
proto.createDocumentFragment = function createDocumentFragment() { |
|
return new DocumentFragment(this) |
|
} |
|
|
|
proto.createEvent = function createEvent(family) { |
|
return new Event(family) |
|
} |
|
|
|
proto.createComment = function createComment(data) { |
|
return new Comment(data, this) |
|
} |
|
|
|
proto.getElementById = function getElementById(id) { |
|
id = String(id) |
|
|
|
var result = domWalk(this.childNodes, function (node) { |
|
if (String(node.id) === id) { |
|
return node |
|
} |
|
}) |
|
|
|
return result || null |
|
} |
|
|
|
proto.getElementsByClassName = DOMElement.prototype.getElementsByClassName |
|
proto.getElementsByTagName = DOMElement.prototype.getElementsByTagName |
|
proto.contains = DOMElement.prototype.contains |
|
|
|
proto.removeEventListener = removeEventListener |
|
proto.addEventListener = addEventListener |
|
proto.dispatchEvent = dispatchEvent |
|
|