From 1354d17270961fff662d40f90521223f8fd0d73b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 14 Aug 2012 18:59:10 +0400 Subject: update dojo to 1.7.3 --- lib/dojo/dom.js.uncompressed.js | 156 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 lib/dojo/dom.js.uncompressed.js (limited to 'lib/dojo/dom.js.uncompressed.js') diff --git a/lib/dojo/dom.js.uncompressed.js b/lib/dojo/dom.js.uncompressed.js new file mode 100644 index 000000000..00bb8e757 --- /dev/null +++ b/lib/dojo/dom.js.uncompressed.js @@ -0,0 +1,156 @@ +define("dojo/dom", ["./_base/sniff", "./_base/lang", "./_base/window"], + function(has, lang, win){ + // module: + // dojo/dom + // summary: + // This module defines the core dojo DOM API. + + // FIXME: need to add unit tests for all the semi-public methods + + try{ + document.execCommand("BackgroundImageCache", false, true); + }catch(e){ + // sane browsers don't have cache "issues" + } + + // ============================= + // DOM Functions + // ============================= + + /*===== + dojo.byId = function(id, doc){ + // summary: + // Returns DOM node with matching `id` attribute or `null` + // if not found. If `id` is a DomNode, this function is a no-op. + // + // id: String|DOMNode + // A string to match an HTML id attribute or a reference to a DOM Node + // + // doc: Document? + // Document to work in. Defaults to the current value of + // dojo.doc. Can be used to retrieve + // node references from other documents. + // + // example: + // Look up a node by ID: + // | var n = dojo.byId("foo"); + // + // example: + // Check if a node exists, and use it. + // | var n = dojo.byId("bar"); + // | if(n){ doStuff() ... } + // + // example: + // Allow string or DomNode references to be passed to a custom function: + // | var foo = function(nodeOrId){ + // | nodeOrId = dojo.byId(nodeOrId); + // | // ... more stuff + // | } + =====*/ + + /*===== + dojo.isDescendant = function(node, ancestor){ + // summary: + // Returns true if node is a descendant of ancestor + // node: DOMNode|String + // string id or node reference to test + // ancestor: DOMNode|String + // string id or node reference of potential parent to test against + // + // example: + // Test is node id="bar" is a descendant of node id="foo" + // | if(dojo.isDescendant("bar", "foo")){ ... } + }; + =====*/ + + // TODO: do we need this function in the base? + + /*===== + dojo.setSelectable = function(node, selectable){ + // summary: + // Enable or disable selection on a node + // node: DOMNode|String + // id or reference to node + // selectable: Boolean + // state to put the node in. false indicates unselectable, true + // allows selection. + // example: + // Make the node id="bar" unselectable + // | dojo.setSelectable("bar"); + // example: + // Make the node id="bar" selectable + // | dojo.setSelectable("bar", true); + }; + =====*/ + + var dom = {}; // the result object + + if(has("ie")){ + dom.byId = function(id, doc){ + if(typeof id != "string"){ + return id; + } + var _d = doc || win.doc, te = id && _d.getElementById(id); + // attributes.id.value is better than just id in case the + // user has a name=id inside a form + if(te && (te.attributes.id.value == id || te.id == id)){ + return te; + }else{ + var eles = _d.all[id]; + if(!eles || eles.nodeName){ + eles = [eles]; + } + // if more than 1, choose first with the correct id + var i = 0; + while((te = eles[i++])){ + if((te.attributes && te.attributes.id && te.attributes.id.value == id) || te.id == id){ + return te; + } + } + } + }; + }else{ + dom.byId = function(id, doc){ + // inline'd type check. + // be sure to return null per documentation, to match IE branch. + return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode + }; + } + /*===== + }; + =====*/ + + dom.isDescendant = function(/*DOMNode|String*/node, /*DOMNode|String*/ancestor){ + try{ + node = dom.byId(node); + ancestor = dom.byId(ancestor); + while(node){ + if(node == ancestor){ + return true; // Boolean + } + node = node.parentNode; + } + }catch(e){ /* squelch, return false */ } + return false; // Boolean + }; + + // TODO: do we need this function in the base? + + dom.setSelectable = function(/*DOMNode|String*/node, /*Boolean*/selectable){ + node = dom.byId(node); + if(has("mozilla")){ + node.style.MozUserSelect = selectable ? "" : "none"; + }else if(has("khtml") || has("webkit")){ + node.style.KhtmlUserSelect = selectable ? "auto" : "none"; + }else if(has("ie")){ + var v = (node.unselectable = selectable ? "" : "on"), + cs = node.getElementsByTagName("*"), i = 0, l = cs.length; + for(; i < l; ++i){ + cs.item(i).unselectable = v; + } + } + //FIXME: else? Opera? + }; + + return dom; +}); -- cgit v1.2.3