@qooxdoo/framework
Version:
The JS Framework for Coders
173 lines (147 loc) • 5.09 kB
JavaScript
/* ************************************************************************
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);
}
});