Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / docs / source / DomHelper-more.html
1 <html>
2 <head>
3   <title>The source code</title>
4     <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
5     <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
6 </head>
7 <body  onload="prettyPrint();">
8     <pre class="prettyprint lang-js">/*!
9  * Ext JS Library 3.0.3
10  * Copyright(c) 2006-2009 Ext JS, LLC
11  * licensing@extjs.com
12  * http://www.extjs.com/license
13  */
14 /**\r
15  * @class Ext.DomHelper\r
16  */\r
17 Ext.apply(Ext.DomHelper,\r
18 function(){\r
19         var pub,\r
20                 afterbegin = 'afterbegin',\r
21         afterend = 'afterend',\r
22         beforebegin = 'beforebegin',\r
23         beforeend = 'beforeend';\r
24 \r
25         // private\r
26     function doInsert(el, o, returnElement, pos, sibling, append){\r
27         el = Ext.getDom(el);\r
28         var newNode;\r
29         if (pub.useDom) {\r
30             newNode = createDom(o, null);\r
31             if (append) {\r
32                     el.appendChild(newNode);\r
33             } else {\r
34                         (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el);\r
35             }\r
36         } else {\r
37             newNode = Ext.DomHelper.insertHtml(pos, el, Ext.DomHelper.createHtml(o));\r
38         }\r
39         return returnElement ? Ext.get(newNode, true) : newNode;\r
40     }\r
41 \r
42         // build as dom\r
43     /** @ignore */\r
44     function createDom(o, parentNode){\r
45         var el,\r
46                 doc = document,\r
47                 useSet,\r
48                 attr,\r
49                 val,\r
50                 cn;\r
51 \r
52         if (Ext.isArray(o)) {                       // Allow Arrays of siblings to be inserted\r
53             el = doc.createDocumentFragment(); // in one shot using a DocumentFragment\r
54                 Ext.each(o, function(v) {\r
55                 createDom(v, el);\r
56             });\r
57         } else if (Ext.isString(o)) {         // Allow a string as a child spec.\r
58             el = doc.createTextNode(o);\r
59         } else {\r
60             el = doc.createElement( o.tag || 'div' );\r
61             useSet = !!el.setAttribute; // In IE some elements don't have setAttribute\r
62             Ext.iterate(o, function(attr, val){\r
63                 if(!/tag|children|cn|html|style/.test(attr)){\r
64                         if(attr == 'cls'){\r
65                             el.className = val;\r
66                         }else{\r
67                         if(useSet){\r
68                             el.setAttribute(attr, val);\r
69                         }else{\r
70                             el[attr] = val;\r
71                         }\r
72                         }\r
73                 }\r
74             });\r
75             Ext.DomHelper.applyStyles(el, o.style);\r
76 \r
77             if ((cn = o.children || o.cn)) {\r
78                 createDom(cn, el);\r
79             } else if (o.html) {\r
80                 el.innerHTML = o.html;\r
81             }\r
82         }\r
83         if(parentNode){\r
84            parentNode.appendChild(el);\r
85         }\r
86         return el;\r
87     }\r
88 \r
89         pub = {\r
90                 <div id="method-Ext.DomHelper-createTemplate"></div>/**\r
91              * Creates a new Ext.Template from the DOM object spec.\r
92              * @param {Object} o The DOM object spec (and children)\r
93              * @return {Ext.Template} The new template\r
94              */\r
95             createTemplate : function(o){\r
96                 var html = Ext.DomHelper.createHtml(o);\r
97                 return new Ext.Template(html);\r
98             },\r
99 \r
100                 <div id="prop-Ext.DomHelper-useDom"></div>/** True to force the use of DOM instead of html fragments @type Boolean */\r
101             useDom : false,\r
102 \r
103             <div id="method-Ext.DomHelper-insertBefore"></div>/**\r
104              * Creates new DOM element(s) and inserts them before el.\r
105              * @param {Mixed} el The context element\r
106              * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
107              * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
108              * @return {HTMLElement/Ext.Element} The new node\r
109          * @hide (repeat)\r
110              */\r
111             insertBefore : function(el, o, returnElement){\r
112                 return doInsert(el, o, returnElement, beforebegin);\r
113             },\r
114 \r
115             <div id="method-Ext.DomHelper-insertAfter"></div>/**\r
116              * Creates new DOM element(s) and inserts them after el.\r
117              * @param {Mixed} el The context element\r
118              * @param {Object} o The DOM object spec (and children)\r
119              * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
120              * @return {HTMLElement/Ext.Element} The new node\r
121          * @hide (repeat)\r
122              */\r
123             insertAfter : function(el, o, returnElement){\r
124                 return doInsert(el, o, returnElement, afterend, 'nextSibling');\r
125             },\r
126 \r
127             <div id="method-Ext.DomHelper-insertFirst"></div>/**\r
128              * Creates new DOM element(s) and inserts them as the first child of el.\r
129              * @param {Mixed} el The context element\r
130              * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
131              * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
132              * @return {HTMLElement/Ext.Element} The new node\r
133          * @hide (repeat)\r
134              */\r
135             insertFirst : function(el, o, returnElement){\r
136                 return doInsert(el, o, returnElement, afterbegin, 'firstChild');\r
137             },\r
138 \r
139             <div id="method-Ext.DomHelper-append"></div>/**\r
140              * Creates new DOM element(s) and appends them to el.\r
141              * @param {Mixed} el The context element\r
142              * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
143              * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
144              * @return {HTMLElement/Ext.Element} The new node\r
145          * @hide (repeat)\r
146              */\r
147             append: function(el, o, returnElement){\r
148             return doInsert(el, o, returnElement, beforeend, '', true);\r
149         },\r
150 \r
151             <div id="method-Ext.DomHelper-createDom"></div>/**\r
152              * Creates new DOM element(s) without inserting them to the document.\r
153              * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
154              * @return {HTMLElement} The new uninserted node\r
155              */\r
156         createDom: createDom\r
157         };\r
158         return pub;\r
159 }());</pre>
160 </body>
161 </html>