Changeset 1347


Ignore:
Timestamp:
02/03/18 14:01:29 (10 months ago)
Author:
gogo
Message:

#1391 - Improve PreserveScripts?

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/GetHtml/DOMwalk.js

    r1313 r1347  
    128128        var attrs = root.attributes; 
    129129         
    130         for ( i = 0; i < attrs.length; ++i ) 
     130        for ( i = attrs.length-1; i >= 0; --i ) 
    131131        { 
    132132          var a = attrs.item(i); 
     
    239239            continue; 
    240240          } 
     241 
     242/* This looks wrong, http://trac.xinha.org/ticket/1391#comment:7 
    241243          if ( /^(_moz)?$/.test(value) ) 
    242244          { 
     
    245247            continue; 
    246248          } 
     249*/ 
     250 
    247251          html += " " + name + '="' + Xinha.htmlEncode(value) + '"'; 
    248252        } 
  • trunk/plugins/PreserveScripts/PreserveScripts.js

    r1168 r1347  
    3232        this.storage = {}; //empty the cache 
    3333        var i = 1; 
     34        var index=0; 
    3435        html = html.replace(/\n?<\?(php)?(\s|[^\s])*?\?>\n?/ig, 
    3536                function(m) 
     
    3738                        if ( c.preservePHP ) // if config set to false wipe out php completely, otherwise ugly fragments may remain 
    3839                        { 
    39                                 s.storage['PreserveScripts_'+i] = m; 
    40                                 var r = '<img title="PHP" id="PreserveScripts_'+i+'" src="'+Xinha.getPluginDir("PreserveScripts")+'/php.png" />'; 
     40                                index = html.indexOf(m,index); 
     41                                 
     42                                index+=m.length 
     43                                 
     44                                var after = html.substring( index, html.length ); 
     45                                 
     46                                //strip out php 
     47                                s.storage['preservescripts_'+i] = m; 
     48                                after=after.replace(/\n?<\?(php)?(\s|[^\s])*?\?>\n?/ig,''); 
     49                                 
     50                                if ( after.match(/^[^<]*>/) ) // make sure cursor is in an editable area (outside tags, script blocks, entities, and inside the body) 
     51                                { 
     52                                        var r = '[preservescripts_'+i+']=preservescripts'; 
     53                                }else{ 
     54                                        var r = '<img title="PHP" id="preservescripts_'+i+'" src="'+Xinha.getPluginDir("PreserveScripts")+'/php.png" />'; 
     55                                } 
    4156                                i++; 
    4257                                return r; 
     
    5267                        function(m) 
    5368                        { 
    54                                 s.storage['PreserveScripts_'+i] = m; 
    55                                 var r = '<img title="JavaScript" id="PreserveScripts_'+i+'" src="' + Xinha.getPluginDir("PreserveScripts") + '/js.png" />'; 
     69                                s.storage['preservescripts_'+i] = m; 
     70                                var r = '<img title="JavaScript" id="preservescripts_'+i+'" src="' + Xinha.getPluginDir("PreserveScripts") + '/js.png" />'; 
    5671                                i++; 
    5772                                return r; 
     
    6479{ 
    6580        var s = this; 
    66         html = html.replace(/<img[^>]*id="(PreserveScripts_\d+)"[^>]*>/g,function(m0,m1){return s.storage[m1];}); 
     81        html = html.replace(/\[(preservescripts_\d+)\](="preservescripts"|=preservescripts)?/g,function(m0,m1){return s.storage[m1];}); 
     82        html = html.replace(/<img[^>]*id="(preservescripts_\d+)"[^>]*>/g,function(m0,m1){return s.storage[m1];}); 
    6783        return html; 
    6884} 
Note: See TracChangeset for help on using the changeset viewer.