Changeset 13657
- Timestamp:
- 05/09/08 18:14:56 (7 months ago)
- Files:
-
- 1 modified
-
dijit/trunk/_editor/html.js (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
dijit/trunk/_editor/html.js
r12972 r13657 1 1 dojo.provide("dijit._editor.html"); 2 2 3 dijit._editor.escapeXml=function(/*String*/str, /*Boolean */noSingleQuotes){3 dijit._editor.escapeXml=function(/*String*/str, /*Boolean?*/noSingleQuotes){ 4 4 //summary: 5 5 // Adds escape sequences for special characters in XML: &<>"' … … 16 16 switch(node.nodeType){ 17 17 case 1: //element node 18 output = '<' +node.nodeName.toLowerCase();18 output = '<' + node.nodeName.toLowerCase(); 19 19 20 20 //store the list of attributes and sort it to have the … … 23 23 if(dojo.isIE && node.outerHTML){ 24 24 var s = node.outerHTML; 25 s = s.substr(0, s.indexOf('>'));26 s = s.replace(/(['"])[^"']*\1/g, '');//to make the following regexp safe25 s = s.substr(0, s.indexOf('>')) 26 .replace(/(['"])[^"']*\1/g, ''); //to make the following regexp safe 27 27 var reg = /([^\s=]+)=/g; 28 28 var m, key; 29 29 while((m = reg.exec(s))){ 30 key =m[1];30 key = m[1]; 31 31 if(key.substr(0,3) != '_dj'){ 32 32 if(key == 'src' || key == 'href'){ … … 36 36 } 37 37 } 38 if(key=='style'){ 39 attrarray.push([key, node.style.cssText.toLowerCase()]); 40 }else{ 41 attrarray.push([key, key=='class'?node.className:node.getAttribute(key)]); 38 var val; 39 switch(key){ 40 case 'style': 41 val = node.style.cssText.toLowerCase(); 42 break; 43 case 'class': 44 val = node.className; 45 break; 46 default: 47 val = node.getAttribute(key); 42 48 } 49 attrarray.push([key, val]); 43 50 } 44 51 } 45 52 }else{ 46 var attr, i =0, attrs = node.attributes;47 while((attr =attrs[i++])){53 var attr, i = 0; 54 while((attr = node.attributes[i++])){ 48 55 //ignore all attributes starting with _dj which are 49 56 //internal temporary attributes used by the editor 50 var n =attr.name;57 var n = attr.name; 51 58 if(n.substr(0,3) != '_dj' /*&& 52 59 (attr.specified == undefined || attr.specified)*/){ … … 64 71 return a[0]<b[0]?-1:(a[0]==b[0]?0:1); 65 72 }); 66 i=0; 67 while((attr=attrarray[i++])){ 68 output += ' '+attr[0]+'="'+dijit._editor.escapeXml(attr[1],true)+'"'; 73 var j = 0; 74 while((attr = attrarray[j++])){ 75 output += ' ' + attr[0] + '="' + 76 (dojo.isString(attr[1]) ? dijit._editor.escapeXml(attr[1], true) : attr[1]) + '"'; 69 77 } 70 78 if(node.childNodes.length){ … … 76 84 case 3: //text 77 85 // FIXME: 78 output = dijit._editor.escapeXml(node.nodeValue, true);86 output = dijit._editor.escapeXml(node.nodeValue, true); 79 87 break; 80 88 case 8: //comment 81 89 // FIXME: 82 output = '<!--' +dijit._editor.escapeXml(node.nodeValue,true)+'-->';90 output = '<!--' + dijit._editor.escapeXml(node.nodeValue, true) + '-->'; 83 91 break; 84 92 default: 85 output = " Element not recognized - Type: " + node.nodeType + " Name: " + node.nodeName;93 output = "<!-- Element not recognized - Type: " + node.nodeType + " Name: " + node.nodeName + "-->"; 86 94 } 87 95 return output; … … 92 100 var out = ""; 93 101 if(!dom){ return out; } 94 var nodes = dom["childNodes"]||dom; 95 var i=0; 96 var node; 97 while((node=nodes[i++])){ 102 var nodes = dom["childNodes"] || dom; 103 var node, i = 0; 104 while((node = nodes[i++])){ 98 105 out += dijit._editor.getNodeHtml(node); 99 106 }