Quelltextfalten funktioniert nicht mit Opera

Fragen und Anregungen zum Forum.
Beiträge die Community betreffend
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Quelltextfalten funktioniert nicht mit Opera

Beitrag von WPö »

Moin!

Habe mir nun eine Anregung zu Herzen genommen und das "Code-Folding"-Skript eingesetzt. Die Markierfunktion ist vorhanden und funktioniert, das Minus und Plus aber erscheinen nicht. In Firefox (wofür ich erstmal GreaseMonkey installieren mußte, da das nur eine Testinstallation ist) klappt alles einwandfrei.

Hab mir den JavaScript-Quelltext angesehen und bin bei der Zeile

Code: Alles auswählen

if (code.innerHTML.split("<br>").length - 1 >= 10)
steckengeblieben, die ich erstmal auf

Code: Alles auswählen

if (code.innerHTML.split("<br").length - 1 >= 10)
korrigiert habe wegen XHTML.

Nach einigem Herumprobieren stellte ich fest, daß Ein-Buchstaben-Zeichenketten als Trenner funktionieren, längere aber trotz entgegenlautender Beschreibung in SelfHTML nicht. Habe erstmal

Code: Alles auswählen

if (code.innerHTML.split(" ").length - 1 >= 100)
geschrieben.

Weiß wer Rat?

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Quelltextfalten funktioniert nicht mit Opera

Beitrag von edel »

Du kannst uns sicherlich auch noch sagen, wo du das Script geladen bzw. wer es geschrieben hat.
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Quelltextfalten funktioniert nicht mit Opera

Beitrag von WPö »

Ja, Edel, kann ich!
http://www.purebasic.fr/german/viewtopi ... 13&t=16794, dort Querverweis http://www.realsource.de/downloads/doc_ ... codefolder.
Warst wohl Du...
Das Skript sieht gut aus, habe aber fast keine Ahnung von JavaScript.

Was kann ich tun?

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Quelltextfalten funktioniert nicht mit Opera

Beitrag von edel »

Ich hab hier noch eine alte Version, versuche die einmal

Code: Alles auswählen

// ==UserScript==
// @name              	Code Helper for PureBasic Forums
// @description      	Code Helper
// @include      	http://www.purebasic.fr/german/viewtopic.php*
// @include      	http://www.purebasic.fr/english/viewtopic.php*
// @include      	http://www.purebasic.fr/french/viewtopic.php*
// ==/UserScript== 

var plus   = "http://www.realsource.de/images/icons/plus.gif";
var minus  = "http://www.realsource.de/images/icons/minus.gif";
var select = "http://www.realsource.de/images/icons/selectall1.png";

var hoch    = "95px";
var col_col = "#EFEFEF";
var exp_col = "#FAFAFA";

var expandfunc =  '\n';
expandfunc +=     'function expand_code(img_id)\n';
expandfunc +=     '{\n';
expandfunc +=     ' var node = document.getElementById(img_id);\n';
expandfunc +=     ' node.src = "'+minus+'" ;\n';
expandfunc +=     ' node.onclick = function() { collapse_code(img_id); };\n';
expandfunc +=     ' var node = document.getElementById("c"+img_id);\n';
expandfunc +=     ' node.removeAttribute("style");\n';
expandfunc +=     ' node.style.backgroundColor = "'+exp_col+'";\n';
expandfunc +=     '}\n';

var collapsefunc = '\n';
collapsefunc +=    'function collapse_code(img_id)\n';
collapsefunc +=    '{\n';
collapsefunc +=    ' var node = document.getElementById(img_id);\n';
collapsefunc +=    ' node.src = "'+plus+'" ;\n';
collapsefunc +=    ' node.onclick = function() { expand_code(img_id); };\n';
collapsefunc +=    ' var node = document.getElementById("c"+img_id);\n';
collapsefunc +=    ' node.style.height = "'+hoch+'";\n';
collapsefunc +=    ' node.style.overflow = "scroll";\n';
collapsefunc +=    ' node.style.backgroundColor = "'+col_col+'";\n';
collapsefunc +=    '}\n';

var selectfunc  = '\n';
selectfunc     += 'function select_code ( img_id )\n';
selectfunc     += '{\n';
selectfunc     += ' if ( window.getSelection() && window.getSelection().removeAllRanges() ) {\n';
selectfunc     += '   window.getSelection().removeAllRanges();\n';
selectfunc     += ' }\n';
selectfunc     += ' div_id = img_id - 1000;\n';
selectfunc     += ' var node = document.getElementById ( "c" + div_id );\n';
selectfunc     += ' if ( document.createRange() ){;\n';
selectfunc     += '   range = document.createRange();\n';
selectfunc     += '   if ( range.selectNode(node) ){;\n';
selectfunc     += '     range.selectNode(node);\n';
selectfunc     += '   };\n';
selectfunc     += ' };\n';
selectfunc     += ' if ( window.getSelection() && window.getSelection().addRange( range ) ){\n';
selectfunc     += '   window.getSelection().addRange( range );\n';
selectfunc     += ' };\n';
selectfunc     += '}\n';

var img_id = 0;

function walk_node(node) 
{
  
  if (node.nodeType == 1) 
  {
  
    if (node.className == "code" && node.tagName == "TD")
    {                         
        var html = node.innerHTML;       
        var count = 0;
        
        for ( var i = 0;i < html.length; i++ )
        {            
            if (html[i] == '\n')
                count ++;
                
            if (count == 10)
            {
                var img = document.getElementById( img_id ).parentNode;      
                var tr_node = null;
                tr_node = node.parentNode;
                node.innerHTML = "";
                var div = document.createElement('div');
                div.innerHTML = html;
                node.appendChild(div);  
                div.style.height = hoch;        
                div.style.overflow = "scroll"; 
                div.id = "c" + img_id;            
                img.style.display = "inline";
                div.style.backgroundColor = col_col;                                        
                break;        
            }            
        }        
        
    }
    else if ( node.textContent == "Code:" && node.className == "genmed" )
    {
	    img_id += 1; 
	    select_id = img_id + 1000;
        
      var s = document.createElement('span');
      s.style.display = 'none';      
      s.innerHTML  = '&nbsp;<img id="'+ img_id    +'" src="'+plus  +'" onclick="expand_code('+img_id   +')" />';
      s.innerHTML += '&nbsp;<img id="'+ select_id +'" src="'+select+'" onclick="select_code('+select_id+')" />';

      node.appendChild(s); 

    }    
    
    if ( node.hasChildNodes() )
    {
      
      for ( var i = 0; i < node.childNodes.length; i++ )
      {
        walk_node( node.childNodes.item( i ) );
      } 
      
    }
    
  }  
  
}


function install()
{
    var script = document.createElement( 'script' );
    script.innerHTML = expandfunc; 
    document.body.appendChild(script);
    
    var script = document.createElement( 'script' );
    script.innerHTML = collapsefunc; 
    document.body.appendChild(script);    

    var script = document.createElement( 'script' );
    script.innerHTML = selectfunc; 
    document.body.appendChild(script);

    walk_node(document.body);
}

install()
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Quelltextfalten funktioniert nicht mit Opera

Beitrag von WPö »

Danke, Edel!

War leider trotzdem nichts. Es müßte ja nur dieses split("<br") funktionieren. Da ich blutiger Anfänger in JavaScript bin und auf die Sprache liebend gerne verzichte, hoffte ich, Du könntest mir sagen, warum es nicht geht.

Allzuviel Aufwand werde ich mit Sicherheit nicht mehr betreiben, nur um die Quelltextfaltung mit anderen Nutzern identisch zu haben. Leerzeichen zu zählen ist sicherlich nicht so geistreich, aber besser als nichts.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Antworten