Changeset 422 for trunk/plugins/GetHtml


Ignore:
Timestamp:
11/10/05 19:55:50 (14 years ago)
Author:
wymsy
Message:

fix doctype problem in fullPage mode
fix html attributes in fullPage mode (IE only)
remove trailing br tag inserted by moz

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/GetHtml/get-html.js

    r419 r422  
    4646/*12*/  new RegExp().compile(/(\S*\s*=\s*)?contenteditable[^=>]*(=\s*[^>\s\/]*)?/gi),//strip contenteditable 
    4747/*13*/  new RegExp().compile(/((href|src)=")([^\s]*)"/g), //find href and src for stripBaseHref() 
    48 /*14*/  new RegExp().compile(/<\/?(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|br|hr|img|embed|param|pre|script|html|head|body)[^>]*>/g), 
     48/*14*/  new RegExp().compile(/<\/?(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|br|hr|img|embed|param|pre|script|html|head|body|meta|link|title)[^>]*>/g), 
    4949/*15*/  new RegExp().compile(/<\/(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|html|head|body|script)( [^>]*)?>/g),//blocklevel closing tag 
    5050/*16*/  new RegExp().compile(/<(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|html|head|body|script)( [^>]*)?>/g),//blocklevel opening tag 
    51 /*17*/  new RegExp().compile(/<(br|hr|img|embed|param|pre)[^>]*>/g),//singlet tag 
     51/*17*/  new RegExp().compile(/<(br|hr|img|embed|param|pre|meta|link|title)[^>]*>/g),//singlet tag 
    5252/*18*/  new RegExp().compile(/(^|<\/(pre|script)>)(\s|[^\s])*?(<(pre|script)[^>]*>|$)/g),//exclude content between pre and script tags 
    5353/*19*/  new RegExp().compile(/(<pre[^>]*>)(\s|[^\s])*?(<\/pre>)/g),//find content inside pre tags 
     
    142142        } else { 
    143143 
    144         var root_tag = (root.nodeType == 1) ? root.tagName.toLowerCase() : '';  
    145         if (outputRoot) { //only happens with <html> tag in fullpage mode 
    146                 html += "<" + root_tag + ">"; 
    147         } 
    148  
    149         //pass tags to cleanHTML() one at a time; ignore comments and php tags 
    150         //includes support for htmlRemoveTags config option 
    151         html += editor.getInnerHTML().replace(/<[^\?!][^>]*>/gi, function(tag){ 
    152                 if(!(editor.config.htmlRemoveTags && editor.config.htmlRemoveTags.test(tag.replace(/<([^\s>\/]+)/,'$1')))) 
    153                 return editor.cleanHTML(tag); 
    154                 else return ''}); 
    155         //IE drops  all </li> tags in a list except the last one 
    156         if(HTMLArea.is_ie) { 
    157                 html = html.replace(/<li( [^>]*)?>/g,'</li><li$1>'). 
    158                         replace(/(<(ul|ol)[^>]*>)[\s\n]*<\/li>/g, '$1'). 
    159                         replace(/<\/li>([\s\n]*<\/li>)+/g, '<\/li>'); 
    160         } 
    161         if (outputRoot) { 
    162                 html += "</" + root_tag + ">"; 
    163         } 
    164         html = HTMLArea.indent(html); 
    165 }; 
     144                var root_tag = (root.nodeType == 1) ? root.tagName.toLowerCase() : '';  
     145                if (outputRoot) { //only happens with <html> tag in fullpage mode 
     146                        html += "<" + root_tag; 
     147                        var attrs = root.attributes; // strangely, this doesn't work in moz 
     148                        for (i = 0; i < attrs.length; ++i) { 
     149                                var a = attrs.item(i); 
     150                                if (!a.specified) { 
     151                                  continue; 
     152                                } 
     153                                var name = a.nodeName.toLowerCase(); 
     154                                var value = a.nodeValue; 
     155                                html += " " + name + '="' + value + '"'; 
     156                        } 
     157                        html += ">"; 
     158                } 
     159                if(root_tag == "html") { 
     160                        innerhtml = editor._doc.documentElement.innerHTML; 
     161                } else { 
     162                        innerhtml = editor._doc.body.innerHTML; 
     163                } 
     164                //pass tags to cleanHTML() one at a time; ignore comments and php tags 
     165                //includes support for htmlRemoveTags config option 
     166                html += innerhtml.replace(/<[^\?!][^>]*>/gi, function(tag){ 
     167                        if(!(editor.config.htmlRemoveTags && editor.config.htmlRemoveTags.test(tag.replace(/<([^\s>\/]+)/,'$1')))) 
     168                        return editor.cleanHTML(tag); 
     169                        else return ''}); 
     170                //IE drops  all </li> tags in a list except the last one 
     171                if(HTMLArea.is_ie) { 
     172                        html = html.replace(/<li( [^>]*)?>/g,'</li><li$1>'). 
     173                                replace(/(<(ul|ol)[^>]*>)[\s\n]*<\/li>/g, '$1'). 
     174                                replace(/<\/li>([\s\n]*<\/li>)+/g, '<\/li>'); 
     175                } 
     176                if(HTMLArea.is_gecko) 
     177                        html = html.replace(/(.*)<br \/>\n$/, '$1'); //strip trailing <br> added by moz 
     178                if (outputRoot) { 
     179                        html += "</" + root_tag + ">"; 
     180                } 
     181                html = HTMLArea.indent(html); 
     182        }; 
    166183//      html = HTMLArea.htmlEncode(html); 
    167184 
Note: See TracChangeset for help on using the changeset viewer.