Seite 1 von 1
Quelltextfalten funktioniert nicht mit Opera
Verfasst: 14.02.2010 12:01
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
steckengeblieben, die ich erstmal auf
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
geschrieben.
Weiß wer Rat?
Gruß - WPö
Re: Quelltextfalten funktioniert nicht mit Opera
Verfasst: 14.02.2010 14:24
von edel
Du kannst uns sicherlich auch noch sagen, wo du das Script geladen bzw. wer es geschrieben hat.
Re: Quelltextfalten funktioniert nicht mit Opera
Verfasst: 14.02.2010 14:51
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ö
Re: Quelltextfalten funktioniert nicht mit Opera
Verfasst: 14.02.2010 18:13
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 = ' <img id="'+ img_id +'" src="'+plus +'" onclick="expand_code('+img_id +')" />';
s.innerHTML += ' <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()
Re: Quelltextfalten funktioniert nicht mit Opera
Verfasst: 14.02.2010 18:50
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ö