123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- //<script>
- //////////////////
- // Helper Stuff //
- //////////////////
- // used to find the Automation server name
- function getDomDocumentPrefix() {
- if (getDomDocumentPrefix.prefix)
- return getDomDocumentPrefix.prefix;
-
- var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
- var o;
- for (var i = 0; i < prefixes.length; i++) {
- try {
- // try to create the objects
- o = new ActiveXObject(prefixes[i] + ".DomDocument");
- return getDomDocumentPrefix.prefix = prefixes[i];
- }
- catch (ex) {};
- }
-
- throw new Error("Could not find an installed XML parser");
- }
- function getXmlHttpPrefix() {
- if (getXmlHttpPrefix.prefix)
- return getXmlHttpPrefix.prefix;
-
- var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
- var o;
- for (var i = 0; i < prefixes.length; i++) {
- try {
- // try to create the objects
- o = new ActiveXObject(prefixes[i] + ".XmlHttp");
- return getXmlHttpPrefix.prefix = prefixes[i];
- }
- catch (ex) {};
- }
-
- throw new Error("Could not find an installed XML parser");
- }
- //////////////////////////
- // Start the Real stuff //
- //////////////////////////
- // XmlHttp factory
- function XmlHttp() {}
- XmlHttp.create = function () {
- try {
- if (window.XMLHttpRequest) {
- var req = new XMLHttpRequest();
-
- // some versions of Moz do not support the readyState property
- // and the onreadystate event so we patch it!
- if (req.readyState == null) {
- req.readyState = 1;
- req.addEventListener("load", function () {
- req.readyState = 4;
- if (typeof req.onreadystatechange == "function")
- req.onreadystatechange();
- }, false);
- }
-
- return req;
- }
- if (window.ActiveXObject) {
- return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
- }
- }
- catch (ex) {}
- // fell through
- throw new Error("Your browser does not support XmlHttp objects");
- };
- // XmlDocument factory
- function XmlDocument() {}
- XmlDocument.create = function () {
- try {
- // DOM2
- if (document.implementation && document.implementation.createDocument) {
- var doc = document.implementation.createDocument("", "", null);
-
- // some versions of Moz do not support the readyState property
- // and the onreadystate event so we patch it!
- if (doc.readyState == null) {
- doc.readyState = 1;
- doc.addEventListener("load", function () {
- doc.readyState = 4;
- if (typeof doc.onreadystatechange == "function")
- doc.onreadystatechange();
- }, false);
- }
-
- return doc;
- }
- if (window.ActiveXObject)
- return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");
- }
- catch (ex) {}
- throw new Error("Your browser does not support XmlDocument objects");
- };
- // Create the loadXML method and xml getter for Mozilla
- if (window.DOMParser &&
- window.XMLSerializer &&
- window.Node && Node.prototype && Node.prototype.__defineGetter__) {
- // XMLDocument did not extend the Document interface in some versions
- // of Mozilla. Extend both!
- XMLDocument.prototype.loadXML =
- Document.prototype.loadXML = function (s) {
-
- // parse the string to a new doc
- var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
-
- // remove all initial children
- while (this.hasChildNodes())
- this.removeChild(this.lastChild);
-
- // insert and import nodes
- for (var i = 0; i < doc2.childNodes.length; i++) {
- this.appendChild(this.importNode(doc2.childNodes[i], true));
- }
- };
-
-
- /*
- * xml getter
- *
- * This serializes the DOM tree to an XML String
- *
- * Usage: var sXml = oNode.xml
- *
- */
- // XMLDocument did not extend the Document interface in some versions
- // of Mozilla. Extend both!
- XMLDocument.prototype.__defineGetter__("xml", function () {
- return (new XMLSerializer()).serializeToString(this);
- });
- Document.prototype.__defineGetter__("xml", function () {
- return (new XMLSerializer()).serializeToString(this);
- });
- }
|