Project

General

Profile

Statistics
| Revision:

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,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
13
if(!_2){
14
_1=_1.replace(/'/gm,"&#39;");
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
}