root / trunk / web / dojo / dijit / _editor / html.js
History | View | Annotate | Download (2.58 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dijit._editor.html"]){ |
| 9 |
dojo._hasResource["dijit._editor.html"]=true; |
| 10 |
dojo.provide("dijit._editor.html");
|
| 11 |
dijit._editor.escapeXml=function(_1,_2){ |
| 12 |
_1=_1.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,"""); |
| 13 |
if(!_2){
|
| 14 |
_1=_1.replace(/'/gm,"'"); |
| 15 |
} |
| 16 |
return _1;
|
| 17 |
}; |
| 18 |
dijit._editor.getNodeHtml=function(_3){ |
| 19 |
var _4;
|
| 20 |
switch(_3.nodeType){
|
| 21 |
case 1: |
| 22 |
var _5=_3.nodeName.toLowerCase();
|
| 23 |
if(!_5||_5.charAt(0)=="/"){ |
| 24 |
return ""; |
| 25 |
} |
| 26 |
_4="<"+_5;
|
| 27 |
var _6=[];
|
| 28 |
var _7;
|
| 29 |
if(dojo.isIE&&_3.outerHTML){
|
| 30 |
var s=_3.outerHTML;
|
| 31 |
s=s.substr(0,s.indexOf(">")).replace(/(['"])[^"']*\1/g,""); |
| 32 |
var _8=/(\b\w+)\s?=/g; |
| 33 |
var m,_9;
|
| 34 |
while((m=_8.exec(s))){
|
| 35 |
_9=m[1];
|
| 36 |
if(_9.substr(0,3)!="_dj"){ |
| 37 |
if(_9=="src"||_9=="href"){ |
| 38 |
if(_3.getAttribute("_djrealurl")){ |
| 39 |
_6.push([_9,_3.getAttribute("_djrealurl")]);
|
| 40 |
continue;
|
| 41 |
} |
| 42 |
} |
| 43 |
var _a,_b;
|
| 44 |
switch(_9){
|
| 45 |
case "style": |
| 46 |
_a=_3.style.cssText.toLowerCase(); |
| 47 |
break;
|
| 48 |
case "class": |
| 49 |
_a=_3.className; |
| 50 |
break;
|
| 51 |
case "width": |
| 52 |
if(_5==="img"){ |
| 53 |
_b=/width=(\S+)/i.exec(s);
|
| 54 |
if(_b){
|
| 55 |
_a=_b[1];
|
| 56 |
} |
| 57 |
break;
|
| 58 |
} |
| 59 |
case "height": |
| 60 |
if(_5==="img"){ |
| 61 |
_b=/height=(\S+)/i.exec(s);
|
| 62 |
if(_b){
|
| 63 |
_a=_b[1];
|
| 64 |
} |
| 65 |
break;
|
| 66 |
} |
| 67 |
default:
|
| 68 |
_a=_3.getAttribute(_9); |
| 69 |
} |
| 70 |
if(_a!=null){ |
| 71 |
_6.push([_9,_a.toString()]); |
| 72 |
} |
| 73 |
} |
| 74 |
} |
| 75 |
}else{
|
| 76 |
var i=0; |
| 77 |
while((_7=_3.attributes[i++])){
|
| 78 |
var n=_7.name;
|
| 79 |
if(n.substr(0,3)!="_dj"){ |
| 80 |
var v=_7.value;
|
| 81 |
if(n=="src"||n=="href"){ |
| 82 |
if(_3.getAttribute("_djrealurl")){ |
| 83 |
v=_3.getAttribute("_djrealurl");
|
| 84 |
} |
| 85 |
} |
| 86 |
_6.push([n,v]); |
| 87 |
} |
| 88 |
} |
| 89 |
} |
| 90 |
_6.sort(function(a,b){
|
| 91 |
return a[0]<b[0]?-1:(a[0]==b[0]?0:1); |
| 92 |
}); |
| 93 |
var j=0; |
| 94 |
while((_7=_6[j++])){
|
| 95 |
_4+=" "+_7[0]+"=\""+(dojo.isString(_7[1])?dijit._editor.escapeXml(_7[1],true):_7[1])+"\""; |
| 96 |
} |
| 97 |
if(_5==="script"){ |
| 98 |
_4+=">"+_3.innerHTML+"</"+_5+">"; |
| 99 |
}else{
|
| 100 |
if(_3.childNodes.length){
|
| 101 |
_4+=">"+dijit._editor.getChildrenHtml(_3)+"</"+_5+">"; |
| 102 |
}else{
|
| 103 |
switch(_5){
|
| 104 |
case "br": |
| 105 |
case "hr": |
| 106 |
case "img": |
| 107 |
case "input": |
| 108 |
case "base": |
| 109 |
case "meta": |
| 110 |
case "area": |
| 111 |
case "basefont": |
| 112 |
_4+=" />";
|
| 113 |
break;
|
| 114 |
default:
|
| 115 |
_4+="></"+_5+">"; |
| 116 |
} |
| 117 |
} |
| 118 |
} |
| 119 |
break;
|
| 120 |
case 4: |
| 121 |
case 3: |
| 122 |
_4=dijit._editor.escapeXml(_3.nodeValue,true);
|
| 123 |
break;
|
| 124 |
case 8: |
| 125 |
_4="<!--"+dijit._editor.escapeXml(_3.nodeValue,true)+"-->"; |
| 126 |
break;
|
| 127 |
default:
|
| 128 |
_4="<!-- Element not recognized - Type: "+_3.nodeType+" Name: "+_3.nodeName+"-->"; |
| 129 |
} |
| 130 |
return _4;
|
| 131 |
}; |
| 132 |
dijit._editor.getChildrenHtml=function(_c){ |
| 133 |
var _d=""; |
| 134 |
if(!_c){
|
| 135 |
return _d;
|
| 136 |
} |
| 137 |
var _e=_c["childNodes"]||_c; |
| 138 |
var _f=!dojo.isIE||_e!==_c;
|
| 139 |
var _10,i=0; |
| 140 |
while((_10=_e[i++])){
|
| 141 |
if(!_f||_10.parentNode==_c){
|
| 142 |
_d+=dijit._editor.getNodeHtml(_10); |
| 143 |
} |
| 144 |
} |
| 145 |
return _d;
|
| 146 |
}; |
| 147 |
} |