diff options
Diffstat (limited to 'node_modules/jsdom/lib/jsdom/living/dom-implementation.js')
| -rw-r--r-- | node_modules/jsdom/lib/jsdom/living/dom-implementation.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/jsdom/lib/jsdom/living/dom-implementation.js b/node_modules/jsdom/lib/jsdom/living/dom-implementation.js new file mode 100644 index 0000000..5ca8989 --- /dev/null +++ b/node_modules/jsdom/lib/jsdom/living/dom-implementation.js @@ -0,0 +1,85 @@ +"use strict"; +var validateNames = require("./helpers/validate-names"); + +module.exports = function (core) { + core.DOMImplementation.prototype.hasFeature = function () { + return true; + }; + + core.DOMImplementation.prototype.createDocumentType = function (qualifiedName, publicId, systemId) { + qualifiedName = String(qualifiedName); + publicId = String(publicId); + systemId = String(systemId); + + validateNames.qname(qualifiedName, core); + + return new core.DocumentType(this._ownerDocument, qualifiedName, publicId, systemId); + }; + + core.DOMImplementation.prototype.createDocument = function (namespace, qualifiedName, doctype) { + namespace = namespace !== null ? String(namespace) : namespace; + qualifiedName = qualifiedName === null ? "" : String(qualifiedName); + if (doctype === undefined) { + doctype = null; + } + + var document = new core.Document({ parsingMode: "xml" }); + + var element = null; + if (qualifiedName !== "") { + element = document.createElementNS(namespace, qualifiedName); + } + + if (doctype !== null) { + document.appendChild(doctype); + } + + if (element !== null) { + document.appendChild(element); + } + + return document; + }; + + core.DOMImplementation.prototype.createHTMLDocument = function (title) { + // Let doc be a new document that is an HTML document. + // Set doc's content type to "text/html". + var document = new core.HTMLDocument({ parsingMode: "html" }); + + // Create a doctype, with "html" as its name and with its node document set + // to doc. Append the newly created node to doc. + var doctype = this.createDocumentType("html", "", ""); + document.appendChild(doctype); + + // Create an html element in the HTML namespace, and append it to doc. + var htmlElement = document.createElementNS("http://www.w3.org/1999/xhtml", "html"); + document.appendChild(htmlElement); + + // Create a head element in the HTML namespace, and append it to the html + // element created in the previous step. + var headElement = document.createElement("head"); + htmlElement.appendChild(headElement); + + // If the title argument is not omitted: + if (title !== undefined) { + // Create a title element in the HTML namespace, and append it to the head + // element created in the previous step. + var titleElement = document.createElement("title"); + headElement.appendChild(titleElement); + + // Create a Text node, set its data to title (which could be the empty + // string), and append it to the title element created in the previous step. + titleElement.appendChild(document.createTextNode(title)); + } + + // Create a body element in the HTML namespace, and append it to the html + // element created in the earlier step. + htmlElement.appendChild(document.createElement("body")); + + // doc's origin is an alias to the origin of the context object's associated + // document, and doc's effective script origin is an alias to the effective + // script origin of the context object's associated document. + + return document; + }; +}; |
