| 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 | |