123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- define("dojo/dom-construct", ["exports", "./_base/kernel", "./_base/sniff", "./_base/window", "./dom", "./dom-attr", "./on"],
- function(exports, dojo, has, win, dom, attr, on){
-
-
-
-
-
-
-
-
-
-
-
-
- var tagWrap = {
- option: ["select"],
- tbody: ["table"],
- thead: ["table"],
- tfoot: ["table"],
- tr: ["table", "tbody"],
- td: ["table", "tbody", "tr"],
- th: ["table", "thead", "tr"],
- legend: ["fieldset"],
- caption: ["table"],
- colgroup: ["table"],
- col: ["table", "colgroup"],
- li: ["ul"]
- },
- reTag = /<\s*([\w\:]+)/,
- masterNode = {}, masterNum = 0,
- masterName = "__" + dojo._scopeName + "ToDomId";
-
-
- for(var param in tagWrap){
- if(tagWrap.hasOwnProperty(param)){
- var tw = tagWrap[param];
- tw.pre = param == "option" ? '<select multiple="multiple">' : "<" + tw.join("><") + ">";
- tw.post = "</" + tw.reverse().join("></") + ">";
-
-
- }
- }
- function _insertBefore(/*DomNode*/node, /*DomNode*/ref){
- var parent = ref.parentNode;
- if(parent){
- parent.insertBefore(node, ref);
- }
- }
- function _insertAfter(/*DomNode*/node, /*DomNode*/ref){
-
-
- var parent = ref.parentNode;
- if(parent){
- if(parent.lastChild == ref){
- parent.appendChild(node);
- }else{
- parent.insertBefore(node, ref.nextSibling);
- }
- }
- }
- exports.toDom = function toDom(frag, doc){
- doc = doc || win.doc;
- var masterId = doc[masterName];
- if(!masterId){
- doc[masterName] = masterId = ++masterNum + "";
- masterNode[masterId] = doc.createElement("div");
- }
-
- frag += "";
-
- var match = frag.match(reTag),
- tag = match ? match[1].toLowerCase() : "",
- master = masterNode[masterId],
- wrap, i, fc, df;
- if(match && tagWrap[tag]){
- wrap = tagWrap[tag];
- master.innerHTML = wrap.pre + frag + wrap.post;
- for(i = wrap.length; i; --i){
- master = master.firstChild;
- }
- }else{
- master.innerHTML = frag;
- }
-
- if(master.childNodes.length == 1){
- return master.removeChild(master.firstChild);
- }
-
- df = doc.createDocumentFragment();
- while((fc = master.firstChild)){
- df.appendChild(fc);
- }
- return df;
- };
- exports.place = function place(/*DOMNode|String*/node, /*DOMNode|String*/refNode, /*String|Number?*/position){
- refNode = dom.byId(refNode);
- if(typeof node == "string"){
- node = /^\s*</.test(node) ? exports.toDom(node, refNode.ownerDocument) : dom.byId(node);
- }
- if(typeof position == "number"){
- var cn = refNode.childNodes;
- if(!cn.length || cn.length <= position){
- refNode.appendChild(node);
- }else{
- _insertBefore(node, cn[position < 0 ? 0 : position]);
- }
- }else{
- switch(position){
- case "before":
- _insertBefore(node, refNode);
- break;
- case "after":
- _insertAfter(node, refNode);
- break;
- case "replace":
- refNode.parentNode.replaceChild(node, refNode);
- break;
- case "only":
- exports.empty(refNode);
- refNode.appendChild(node);
- break;
- case "first":
- if(refNode.firstChild){
- _insertBefore(node, refNode.firstChild);
- break;
- }
-
- default:
- refNode.appendChild(node);
- }
- }
- return node;
- };
- exports.create = function create(/*DOMNode|String*/tag, /*Object*/attrs, /*DOMNode?|String?*/refNode, /*String?*/pos){
- var doc = win.doc;
- if(refNode){
- refNode = dom.byId(refNode);
- doc = refNode.ownerDocument;
- }
- if(typeof tag == "string"){
- tag = doc.createElement(tag);
- }
- if(attrs){ attr.set(tag, attrs); }
- if(refNode){ exports.place(tag, refNode, pos); }
- return tag;
- };
- function _empty(/*DomNode*/ node){
- if(node.canHaveChildren){
- try{
-
- node.innerHTML = "";
- return;
- }catch(e){
-
-
- }
- }
-
- for(var c; c = node.lastChild;){
- _destroy(c, node);
- }
- }
- exports.empty = function empty(/*DOMNode|String*/ node){
- _empty(dom.byId(node));
- };
- function _destroy(/*DomNode*/ node, /*DomNode*/ parent){
- if(node.firstChild){
- _empty(node);
- }
- if(parent){
-
- has("ie") && parent.canHaveChildren && 'removeNode' in node ? node.removeNode(false) :
- parent.removeChild(node);
- }
- }
- exports.destroy = function destroy(/*DOMNode|String*/ node){
- node = dom.byId(node);
- if(!node){ return; }
- _destroy(node, node.parentNode);
- };
- });
|