UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

173 lines (147 loc) 5.09 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Daniel Wagner (d_wagner) ************************************************************************ */ /** * Internal class which contains the checks used by {@link qx.core.Environment}. * All checks in here are marked as internal which means you should never use * them directly. * * This class should contain all XML-related checks * * @internal */ qx.Bootstrap.define("qx.bom.client.Xml", { statics: { /** * Checks if XML is supported * * @internal * @return {Boolean} <code>true</code> if XML is supported */ getImplementation : function() { return document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("XML", "1.0"); }, /** * Checks if an XML DOMParser is available * * @internal * @return {Boolean} <code>true</code> if DOMParser is supported */ getDomParser : function() { return typeof window.DOMParser !== "undefined"; }, /** * Checks if the proprietary selectSingleNode method is available on XML DOM * nodes. * * @internal * @return {Boolean} <code>true</code> if selectSingleNode is available */ getSelectSingleNode : function() { return typeof qx.xml.Document.create().selectSingleNode !== "undefined"; }, /** * Checks if the proprietary selectNodes method is available on XML DOM * nodes. * * @internal * @return {Boolean} <code>true</code> if selectSingleNode is available */ getSelectNodes : function() { return typeof qx.xml.Document.create().selectNodes !== "undefined"; }, /** * Checks availability of the getElementsByTagNameNS XML DOM method. * * @internal * @return {Boolean} <code>true</code> if getElementsByTagNameNS is available */ getElementsByTagNameNS : function() { return typeof qx.xml.Document.create().getElementsByTagNameNS !== "undefined"; }, /** * Checks if MSXML-style DOM Level 2 properties are supported. * * @internal * @return {Boolean} <code>true</code> if DOM Level 2 properties are supported */ getDomProperties : function() { var doc = qx.xml.Document.create(); return ("getProperty" in doc && typeof doc.getProperty("SelectionLanguage") === "string"); }, /** * Checks if the getAttributeNS and setAttributeNS methods are supported on * XML DOM elements * * @internal * @return {Boolean} <code>true</code> if get/setAttributeNS is supported */ getAttributeNS : function() { var docElem = qx.xml.Document.fromString("<a></a>").documentElement; return typeof docElem.getAttributeNS === "function" && typeof docElem.setAttributeNS === "function"; }, /** * Checks if the createElementNS method is supported on XML DOM documents * * @internal * @return {Boolean} <code>true</code> if createElementNS is supported */ getCreateElementNS : function() { return typeof qx.xml.Document.create().createElementNS === "function"; }, /** * Checks if the proprietary createNode method is supported on XML DOM * documents * * @internal * @return {Boolean} <code>true</code> if DOM Level 2 properties are supported */ getCreateNode : function() { return typeof qx.xml.Document.create().createNode !== "undefined"; }, /** * Checks if the proprietary getQualifiedItem method is supported for XML * element attributes * * @internal * @return {Boolean} <code>true</code> if DOM Level 2 properties are supported */ getQualifiedItem : function() { var docElem = qx.xml.Document.fromString("<a></a>").documentElement; return typeof docElem.attributes.getQualifiedItem !== "undefined"; } }, defer : function(statics) { qx.core.Environment.add("xml.implementation", statics.getImplementation); qx.core.Environment.add("xml.domparser", statics.getDomParser); qx.core.Environment.add("xml.selectsinglenode", statics.getSelectSingleNode); qx.core.Environment.add("xml.selectnodes", statics.getSelectNodes); qx.core.Environment.add("xml.getelementsbytagnamens", statics.getElementsByTagNameNS); qx.core.Environment.add("xml.domproperties", statics.getDomProperties); qx.core.Environment.add("xml.attributens", statics.getAttributeNS); qx.core.Environment.add("xml.createelementns", statics.getCreateElementNS); qx.core.Environment.add("xml.createnode", statics.getCreateNode); qx.core.Environment.add("xml.getqualifieditem", statics.getQualifiedItem); } });