Lokales Syntax Highlighting
-
Guten Tag,
meint ihr es ist möglich, ein lokales aber trotzdem dynamisches Syntax Highlighting zu realiseren? Wenn ja wie?
Konkret:
Ich will in einer .html Datei, die Lokal zu öffnen ist, (also php/ähnliche Scripte die nur auf Servern laufen gehen nicht) Code Stellen einbauen, die z.B. so aussehen wie die hier im Forum.#include <all-header.hpp> int main() { int i = 5; }
Und das am besten einfach nur mit der Angabe auf eine Datei, in der nichts als der Quelltext selbst steht.
-
-
Ah! Javascript hatte ich ja völlig vergessen, das lese ich mir mal an. Besten Dank!
-
Äh.. irgendwie.. muss ich da noch mal nachfragen. Wie komme ich mit Javascript an den rohen Text einer Datei? Ich finde immer nur so komische Hacks, geht das denn nicht vernünftig?
-
Wenn du nicht unbedingt die Requesting-Features des Webbrowsers einsetzen möchtest, dann könntest du einen unsichtbaren IFrame in HTML-Quellcode hinterlegen. Die Source des IFrames geht aber nicht auf eine HTML-Seite, sondern auf die Textdatei. Mit Javascript kannst du den Inhalt des Frames bzw. der Textdatei auslesen.
Aber aufpassen: Internet Explorer und Firefox, als auch Netscape und Opera sind etwas eigen, wenn es um den Zugriff auf Frames geht.
So gesehen würde ich doch die einfachere Variante nehmen, die du selbst bereits vorgeschlagen hast. Komische Hacks.. tseee...
-
ShadowTurtle schrieb:
So gesehen würde ich doch die einfachere Variante nehmen, die du selbst bereits vorgeschlagen hast. Komische Hacks.. tseee...
Es ist nur etwas nervig, statt dem normalen Code
var xy = "int main()\r\n" "{\r\n" " printf(\"blubb.\");\r\n" "}\r\n";
so was schreiben zu müssen. Das mit dem Auslesen aus IFrames gucke ich mir mal an, scheint mir aber auch nicht gerade eine schöne Lösung zu sein.
-
wo kommt der Code denn her?
Du brauchst den nur in einer HTML Datei drinnen zu haben die du mit dem Browser öffnest, den Rest kannst du über javascript machen. Einfacher ists natürlich den Code gleich mit syntax highlight zu generieren, gibt ja massig Tools dafür.
Verrate mal etwas mehr Hintergrund infos.
-
Shade Of Mine schrieb:
wo kommt der Code denn her?
Vorzugsweise aus einer (lokalen) .c-Datei.
Shade Of Mine schrieb:
Du brauchst den nur in einer HTML Datei drinnen zu haben die du mit dem Browser öffnest, den Rest kannst du über javascript machen.
Ja, also meine Idee war jetzt folgende: Ich zeige Codestellen über iframes mit den src="" Verweis direkt auf eine .c Datei. Jedes iframe wird so mit class="c-code" erstellt. Dann rufe ich eine Javascript Funktion auf, die mit
elements = document.getElementsByClassName(class_name); for (var i = 0; i < elements.length; ++i) { /* ? */ }
über alle Elemente iteriert und sie einfärbt.
Meine Fragen:
Wie komme ich an den Text des iframes? Wie kann ich den ändern?
Kann ich dem iframe eine automatische Größe geben, sodass nie Scrollbalken zu sehen sind und der Inhalt der Datei genau angezeigt wird?
-
Ich gehe nun davon langsam aus, dass du einen Zentralen Synthax-Highlighter einrichten möchtest und die Quelle dezentral (Quellcode) irgendwo liegen kann. So gesehen bringt es nicht wirklich etwas, den gesamten Quellcode in die HTML-File einzubinden.
Bei großen Projekten ist ein Code-Generator nur umständlich und Zeitraubend in schuss zu halten (vor allem wenn ich mir Vorstelle, die Sources von OpenOffice bzw. LibreOffice müssten alle gehighlighted werden).Jemand der so etwas nicht weiss, der hätte deine Anforderung vom ersten Post weg als eine bescheuerte Frage betrachtet, cooky451.
Shade Of Mine schrieb:
Du brauchst den nur in einer HTML Datei drinnen zu haben die du mit dem Browser öffnest, den Rest kannst du über javascript machen.
Dem kann ich nur beipflichten, wenn du nicht gleich 50 (oder mehr) große Quellcode Dateien auf eine Seite unterbringen möchtest. Oder wenn du es später Verwaltungstechnisch einfacher haben möchtest? z.B. sollen nur die Quelldateien (dezentral) ausgetauscht/kopiert werden müssen und der Highlighter (zentral) soll den Rest selbst erledigen müssen.
In diesen Fall sei dir nochmals folgender SyntaxHighlighter empfohlen, den auch
nman
dir empfohlen hat: http://alexgorbatchev.com/SyntaxHighlighter/cooky451 schrieb:
Wie komme ich an den Text des iframes? Wie kann ich den ändern?
Kann ich dem iframe eine automatische Größe geben, sodass nie Scrollbalken zu sehen sind und der Inhalt der Datei genau angezeigt wird?Das sind ja gleich mehrere Dinge auf einmal die du tun möchtest.
Den Inhalt eines IFrames kannst du wie folgt auslesen. Aber aufpassen, weil folgender Snippsel nicht mit jeden Browser funktioniert:
function getContentFromIframe(iFrameName) { var myIFrame = document.getElementById(iFrameName); var content = myIFrame.contentWindow.document.body.innerHTML; return( content ) }
So kannst du die Funktion verwenden um den Inhalt eines IFrames auszulesen und innerhalb eines DIV-Containers anzeigen zu lassen:
Javascript-Part:
document.getElementById("my_container").innerHTML = getContentFromIframe("code_frame");
Html:
<div id="my_container"></div> <iframe src="/blob.c" width="90%" height="400" name="code_frame" id="code_frame"> <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen: Sie können die eingebettete Seite über den folgenden Verweis aufrufen: ...</p> </iframe>
Jetzt wolltest du aber Scrollbalken in der Darstellung haben. Aber dazu brauchst du nicht einmal ein Iframe. Modifiziere den DIV-Container einfach mit folgenden Style und dann hast du folgenden HTML-Snippsel:
<div id="my_container" style="width: 800px; height: 300px; overflow: auto;"></div>
Hier nochmal die verschiedene Eigenschaftswerte die Overflow annehmen kann: http://de.selfhtml.org/css/eigenschaften/anzeige/overflow.htm
Jetzt kann es aber noch passieren, dass der Inhalt des IFrames ausgelesen wird, bevor überhaupt die Datei
blob.c
vollständig geladen ist. Auch hier gibt es eine kleine Abhilfe.Vor dem auslesen des Inhalts des IFrames muss einfach ein wenig gewartet werden. Verwende dafür am besten die Funktion
setTimeout
in Javascript.Der Quellcode sähe dann wie folgt aus:
setTimeout( function() { document.getElementById("my_container").innerHTML = getContentFromIframe("code_frame"); }, 2000 );
.. wobei ich hier eine Angabe von 2000 Millisekunden gemacht habe. Das ist also die Zeit die ablaufen muss, damit der Frame ausgelesen und dem DIV-Container zugewiesen wird.
Für das anschließende Synthax-Highlighting solltest du wirklich ein bereits fertiges Framework oder Lib. verwenden. Und dieser Schritt sollte dann auch kein Problem mehr darstellen, wenn du das Teil verwendest, welches
nman
dir vorgeschlagen hat.**Weil, wenn du das Teil mal ausprobierst, vielleichst stellst du dann fest, dass
SyntaxHighlighter 3.0.83
bereits eine Funktionalität mitbringt um Lokale Dateien einzulesen??? Ich weiss es nicht, aber brauchen wirst du das Teil in jeden Fall noch:Wie willst du z.B. PHP- & HTML-Quellcode oder C++ & ASM-Quellcode parsen, wenn du einfach nur einfärbst statt richtig zu parsen? Also lass das mit der Eigenprogrammierung in diesen Fall und verwende etwas etabliertes.
Ich persönlich denke, dass das schließlich nicht deine Hauptaufgabe sein soll, auf einmal einen funktionstüchtigen Syntax-Highlighter mit Support für lokalen Dateizugriff zu programmieren.**
Zu deiner anderen Frage bzw. deinem anderen Problem:
cooky451 schrieb:
Kann ich dem iframe eine automatische Größe geben, sodass nie Scrollbalken zu sehen sind und der Inhalt der Datei genau angezeigt wird?
Nur wenn du wieder Javascript bemühst. Aber dieser Code dürfte diesen Rahmen hier ersichtlich sprengen und funktioniert auch nicht in jeden Browser (zumindest nicht im IE).
Was du aber machen kannst und was ich auch schon oft gemacht habe: Inhalt von Quelle einlesen (z.B. via IFrame oder via Ajax ^^) und schließlich in ein DIV-Container stecken. Sobald der Inhalt keine Webseite ist, kann mit ruhigen Gewissen ein DIV-Container verwendet werden.
Ansonsten kann ich für IFrames bzgl. automatischer Größenanpassung keine weitere Hilfe geben.
-
ShadowTurtle schrieb:
Ich gehe nun davon langsam aus, dass du einen Zentralen Synthax-Highlighter einrichten möchtest und die Quelle dezentral (Quellcode) irgendwo liegen kann.
Ja, was denn sonst?
ShadowTurtle schrieb:
So gesehen bringt es nicht wirklich etwas, den gesamten Quellcode in die HTML-File einzubinden.
?
ShadowTurtle schrieb:
Bei großen Projekten ist ein Code-Generator nur umständlich und Zeitraubend in schuss zu halten (vor allem wenn ich mir Vorstelle, die Sources von OpenOffice bzw. LibreOffice müssten alle gehighlighted werden).
Ja..
ShadowTurtle schrieb:
Jemand der so etwas nicht weiss, der hätte deine Anforderung vom ersten Post weg als eine bescheuerte Frage betrachtet, cooky451.
Ja.. was genau war an
cooky451 schrieb:
Ich will in einer .html Datei, die Lokal zu öffnen ist, (also php/ähnliche Scripte die nur auf Servern laufen gehen nicht) Code Stellen einbauen, die z.B. so aussehen wie die hier im Forum.
Und das am besten einfach nur mit der Angabe auf eine Datei, in der nichts als der Quelltext selbst steht.nicht zu verstehen?
ShadowTurtle schrieb:
In diesen Fall sei dir nochmals folgender SyntaxHighlighter empfohlen, den auch
nman
dir empfohlen hat: http://alexgorbatchev.com/SyntaxHighlighter/Der funktioniert bei mir leider nicht. Zumindest ist der Text in den Beispiel einfach schwarz.. (Windows 7, Firefox 6)Hm.. die Index funktioniert doch, mal gucken wie die das machen.ShadowTurtle schrieb:
Den Inhalt eines IFrames kannst du wie folgt auslesen. Aber aufpassen, weil folgender Snippsel nicht mit jeden Browser funktioniert:
Hatte ich auch schon gefunden, geht aber unter Firefox leider nicht.
ShadowTurtle schrieb:
Vor dem auslesen des Inhalts des IFrames muss einfach ein wenig gewartet werden. Verwende dafür am besten die Funktion
setTimeout
in Javascript.Oh man.. Javascript wird mir immer unsympathischer, was ein Gefrickel.
ShadowTurtle schrieb:
Für das anschließende Synthax-Highlighting solltest du wirklich ein bereits fertiges Framework oder Lib. verwenden.
Na die ~5 Zeilen Code sind ja jetzt nicht so das Problem, wenn ich an den Text des iframes kommen würde.
ShadowTurtle schrieb:
Wie willst du z.B. PHP- & HTML-Quellcode oder C++ & ASM-Quellcode parsen, wenn du einfach nur einfärbst statt richtig zu parsen? Also lass das mit der Eigenprogrammierung in diesen Fall und verwende etwas etabliertes.
Wer redet denn jetzt auf einmal von Parsen? Einfärben ist wie bereits erwähnt trivial und ich brauche definitiv nur eine Sprache in einem Feld.
-
Dann nimm GeSHi: http://qbnz.com/highlighter/
Und schreib dir die HTML Dateien selber raus. Du kannst PHP ja auch über die Commandozeile ausführen. Und Syntaxhighlight ist nicht so trivial wie du vielleicht denkst. Nimm eine bestehende Lösung: es gibt massig.
Ich würde wie gesagt GeSHi nehmen. nmans Lösung läuft nur im Browser, das passt hier wohl eher nicht. Ich hätte aber auch ehrlich gesagt von deinem 1. Post aus etwas komplett anderes verstanden.
Deshalb nochmal langsam zum mitschreiben:
Du hast irgendwo Quellcode liegen. Diesen willst du jetzt in eine HTML Datei mit Syntax Highlight umwandeln. Und dafür willst du jetzt ein Tool haben.
GeSHi kann das zB. Oder aber Tools wie Doxygen, etc. die eben Dokumentationen des Codes erstellen - da sind dann auch Hyperlinks zwischen Funktionen möglich. Die meisten IDEs haben auch eine Möglichkeit des Syntaxgehighlighteten exportes...
-
Shade Of Mine schrieb:
Du hast irgendwo Quellcode liegen. Diesen willst du jetzt in eine HTML Datei mit Syntax Highlight umwandeln. Und dafür willst du jetzt ein Tool haben.
Ne, da könnte ich mir ja einfach ein Programm für schreiben. Ich habe einmal eine HTML-Datei und einmal Quellcode in einer separaten Datei. Wenn ich diese HTML-Datei jetzt mit dem Browser öffne (lokal), dann soll unter anderem der Quellcode farbig dargestellt werden. Also ganz einfach, so wie:
<html> <head> <title> Test </title> <link rel="stylesheet" type="text/css" href="style/style.css"> <script language="JavaScript" src="script/highlight.js"></script> </head> <body> <iframe name="c-code" src="code/test.c"></iframe> <script> highlight_code("c-code"); </script> </body> </html>
Shade Of Mine schrieb:
Und Syntaxhighlight ist nicht so trivial wie du vielleicht denkst.
Also in C++ schon, ich bin jetzt nicht davon ausgegangen, dass es in einer Scriptsprache wesentlich schlechter aussieht.
-
Edit: kleinere Korrekturen vorgenommen
cooky451 schrieb:
ShadowTurtle schrieb:
Ich gehe nun davon langsam aus, dass du einen Zentralen Synthax-Highlighter einrichten möchtest und die Quelle dezentral (Quellcode) irgendwo liegen kann.
Ja, was denn sonst?
ShadowTurtle schrieb:
So gesehen bringt es nicht wirklich etwas, den gesamten Quellcode in die HTML-File einzubinden.
?
Herje.. Halt so wie du es schon beschrieben hast:
cooky451 schrieb:
ShadowTurtle schrieb:
So gesehen würde ich doch die einfachere Variante nehmen, die du selbst bereits vorgeschlagen hast. Komische Hacks.. tseee...
Es ist nur etwas nervig, statt dem normalen Code
var xy = "int main()\r\n" "{\r\n" " printf(\"blubb.\");\r\n" "}\r\n";
so was schreiben zu müssen.
...cooky451 schrieb:
ShadowTurtle schrieb:
Jemand der so etwas nicht weiss, der hätte deine Anforderung vom ersten Post weg als eine bescheuerte Frage betrachtet, cooky451.
Ja.. was genau war an
cooky451 schrieb:
Ich will in einer .html Datei, die Lokal zu öffnen ist, (also php/ähnliche Scripte die nur auf Servern laufen gehen nicht) Code Stellen einbauen, die z.B. so aussehen wie die hier im Forum.
Und das am besten einfach nur mit der Angabe auf eine Datei, in der nichts als der Quelltext selbst steht.nicht zu verstehen?
Eigentlich alles. Ich habe das aber nur nochmal angespro..geschrieben, weil Shade Of Mine mal folgendes meinte und da habe ich auf nette art und weise einfach Bezug genommen:
Shade Of Mine schrieb:
wo kommt der Code denn her?
Du brauchst den nur in einer HTML Datei drinnen zu haben die du mit dem Browser öffnest, den Rest kannst du über javascript machen.cooky451 schrieb:
ShadowTurtle schrieb:
Den Inhalt eines IFrames kannst du wie folgt auslesen. Aber aufpassen, weil folgender Snippsel nicht mit jeden Browser funktioniert:
Hatte ich auch schon gefunden, geht aber unter Firefox leider nicht.
Also bei mir funktioniert das mit Firefox 3.6.13. Das heißt also, dass die neuere Versionen bei behandlung von Lokalen Dateien sicherer geworden sind.
Ich habe darauf hin mal mit dem IETester Tests in folgende Internet Explorer Versionen durchgeführt:
- Internet Explorer 5.5
- Internet Explorer 6
- Internet Explorer 7
- und Internet Explorer 8
Im Ergebniss haben die Snippselteile allesamt bis zu IE 8 funktioniert. IE 9 kann ich am Testsystem noch nicht testen. Jetzt bitte nicht fragen weshalb ich noch Firefox 3.6.13 und nur bis zu IE8 alles auf den Testrechner habe...
Es kann aber nicht sein das ältere Firefox-Versionen einen Propitären DOM-Aufbau haben. Zur Sicherheit habe ich folgenden Snippet zur Inhaltsgewinnung des Frames ausprobiert:
frames[iFrameName].document.body.innerHTML
Bis auf den Internet Explorer 5.5 arbeiten alle Webbrowser mit dieser Variante. Außer mal wieder der Chrome Webbrowser.
cooky451 schrieb:
Oh man.. Javascript wird mir immer unsympathischer, was ein Gefrickel.
Dann lies mal das ein paar Zeilen weiter ...
cooky451 schrieb:
ShadowTurtle schrieb:
Für das anschließende Synthax-Highlighting solltest du wirklich ein bereits fertiges Framework oder Lib. verwenden.
Na die ~5 Zeilen Code sind ja jetzt nicht so das Problem, wenn ich an den Text des iframes kommen würde.
Ich hoffe du hast in den ~5 Zeilen Code mit einberechnet, dass "plaaa".replace('a', 'b') das Zeichen 'a' nur einmal ersetzt wird und die restlichen bleiben. Wie das aktuell implementiert ist, dass weiss ich nicht, weil ich eine kleine Standardbibliothek zur Arbeitserleichterung verwende *man möge mich nicht schlagen, dass ich das deswegen nicht mehr so genau weiß
*
cooky451 schrieb:
ShadowTurtle schrieb:
Wie willst du z.B. PHP- & HTML-Quellcode oder C++ & ASM-Quellcode parsen, wenn du einfach nur einfärbst statt richtig zu parsen? Also lass das mit der Eigenprogrammierung in diesen Fall und verwende etwas etabliertes.
Wer redet denn jetzt auf einmal von Parsen? Einfärben ist wie bereits erwähnt trivial und ich brauche definitiv nur eine Sprache in einem Feld.
Ok das hat sich dann. Kannst aber trotzdem noch den Highlighter ausprobieren. Ich bin nur davon ausgegangen, dass in deinen C++ Sources auch
extern "c"
sources und so drin vorkommen kann. Da gibt es (wenn auch eigentlich minimalistische) kleine Unterschiede, die ich (zugegebenermaße) nun nicht spontan beschreiben kann. Aber eben jene müssen auch beachtet werden und das geht nur via Parsing am besten. Die hier vorgestellten Bibliotheken können das sehr gut.OnLoad statt setTimeout
Bevor ich es vergesse: Statt setTimeout kannst du auch onload als Attribut im body-tag verwenden. Als Wert muss der Funktionsaufruf einer vorhandenen Javascript-Funktion angegeben werden.
Jedoch verhalten sich hier die Webbrowser wieder unterschiedlich: Einmal gilt eine Webseite schon als geladen sobald die Hauptseite geladen ist, aber der andere Browser triggert OnLoad erst, wenn auch das letzte IFrame komplett geladen ist.
Kompatiblität zum Chrome-Webbrowser
Ich habe soeben festgestellt, dass das Auslesen von IFrames in Chrome bei lokal geladenen Dateien nicht funktioniert. Das liegt höchstwahrscheinlich an einer Sicherheitseinstellung. In Firefox funktionierts. Aber ich glaube dass die Regelung genau so auch für verschiedene Ajax-Techniken gelten würde. Von daher gehe ich mal aus, dass wegen dem Sicherheitsaspekt ein Hinweis zur unbedingten Verwendung einer Ajax-Technik hier falsch am Platz wäre.
Testcode
Nachfolgend noch kurz der Testcode:
<html> <head> <script type="text/javascript"> function getContentFromIframe(iFrameName) { return( frames[iFrameName].document.body.innerHTML ); /* var myIFrame = document.getElementById(iFrameName); var content = myIFrame.contentWindow.document.body.innerHTML; return( content ); */ } setTimeout( function() { document.getElementById("my_container").innerHTML = getContentFromIframe("code_frame"); }, 2000 ); </script> </head> <body> <div id="my_container"></div> <iframe src="blob.txt" width="90%" height="400" name="code_frame" id="code_frame"> <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen: Sie können die eingebettete Seite über den folgenden Verweis aufrufen: ...</p> </iframe> </body> </html>
-
cooky451 schrieb:
Shade Of Mine schrieb:
Du hast irgendwo Quellcode liegen. Diesen willst du jetzt in eine HTML Datei mit Syntax Highlight umwandeln. Und dafür willst du jetzt ein Tool haben.
Ne, da könnte ich mir ja einfach ein Programm für schreiben. Ich habe einmal eine HTML-Datei und einmal Quellcode in einer separaten Datei. Wenn ich diese HTML-Datei jetzt mit dem Browser öffne (lokal), dann soll unter anderem der Quellcode farbig dargestellt werden.
Wenn man sich das aber mal genauer überlegt, dann ist die Lösung von Shade Of Mine doch die nützlichere Variante. Ich dachte das hättest du verstanden, nachdem du bereits schon festgestellt hast, dass meine Lösung aus irgendwelchen Gründen nicht so funktioniert wie es soll.
Was willst du mit einen System welches aus Sicherheitsrelevanten gründen (siehe mein letztes Posting) bald (eig. schon jetzt) wirklich abgedankt hat?
Besser vorführen/zeigen/verdeutlichen kann ich das nicht mehr _und_ trotzdem habe ich versucht auf deinen Wunsch einzugehen (um auch selbst mal zu sehen ob die IFrame-Technik auch heute noch "Ok" ist).Es kann auch es auch nicht sein, dass man wegen eines Codebetrachters tatsächlich die lokalen Sicherheitseinstellungen runter schrauben muss. Im Privateinsatz, innerhalb einer Virtual Machine ist das etwas anderes. Aber auf der Arbeit??
Also mach lieber ein Programm, denn da dürfte der Synthax-Highlighter wohl genau so trivial ausfallen. Oder verwende doch ein Code-Documentation System!
Wieso schlägst du
cooky451
nicht so ein System vor,Shade Of Mine
?
-
ShadowTurtle schrieb:
Also mach lieber ein Programm
Nein, das ist nervig, genau das will ich ja vermeiden. Das muss doch auch dynamisch möglich sein.
Dein Testcode funktioniert sogar bei mir, vielleicht habe ich vorher einfach kein Delay eingebaut. Ich versuche mich gerade mit onLoad, aber leider kann ich der Funktion kein Argument übergeben?
http://www.w3schools.com/jsref/event_frame_onload.asp
Die Beispiele hier sind alle Parameterlos. Versucht habe ich schon:<iframe name="c-code" src="code/test.c" width="800" onLoad="highlight("c-code")"></iframe> <iframe name="c-code" src="code/test.c" width="800" onLoad="highlight(c-code)"></iframe> <iframe name="c-code" src="code/test.c" width="800" onLoad="highlight(\"c-code\")"></iframe>
Die Funktion wird leider nie aufgerufen. Wie geht das richtig?
-
OnLoad geht nur im Body-Tag, dass hatte ich vergessen zu erwähnen, sollte auch nur im Hauptquellcode verwendet werden. Möchtest du ein Crossbrowser-Kompatibles OnLoad empfiehlt sich tatsächlich ein ausgereiftest Framework wie jQuery zu verwenden.
Ansonsten denke ich immer noch, dass die Lösung von Shade Of Mine ist richtiger ist.
Was mir gerade einfällt und eventuell extrem wichtig ist:
Es könnte Unterschiede geben, sobald der Webbrowser aus irgendeinem Grund im Quirksmodus läuft. Vielleicht ist das ja der Fall und das dürfte der Unterschied zwischen meinen Snippsel sein und.. naja.. kA.
Und Funktionsaufrufe (mit einem String) werden immer noch so gemacht:
highlight("c-code")
!
-
ShadowTurtle schrieb:
OnLoad geht nur im Body-Tag, dass hatte ich vergessen zu erwähnen, sollte auch nur im Hauptquellcode verwendet werden.
Im Hauptquellcode?
Wie auch immer, wenn ich eine Testfunktion ohne Parameter nehme funktioniert es ja einwandfrei..ShadowTurtle schrieb:
Und Funktionsaufrufe (mit einem String) werden immer noch so gemacht:
highlight("c-code")
!Das wiederrum funktioniert leider nicht. (Also in Verbindung mit onLoad.)
Edit:
Nachdem ich das Ganze einfach mal mit einem Delay getestet habe, musste ich feststellen, dass man auch nicht den sauberen Text bekommt, sondern von HTML-Codes kaputt gemacht Zeichen. (&xy, etc.)So langsam wird mir ein einfaches C++ Programm doch schmackhaft, oh man, was ein Gefrickel..
Da ich jetzt aber den Text habe wäre erst mal alles geklärt, nur das onLoad() wäre halt noch schön.
-
Was ist überhaupt dein Hauptziel? Beschreibe das doch mal näher, als bis zu der Geschichte mit den Dateizugriff und lokalem Syntax Highlighting.
Es wäre eventuell doch ratsam ein bereits fertiges System für deine Sache einzusetzen, sollte anderweitiger Anspruch für die Umsetzung zu lange benötigen.
Ansonsten ....
cooky451 schrieb:
ShadowTurtle schrieb:
OnLoad geht nur im Body-Tag, dass hatte ich vergessen zu erwähnen, sollte auch nur im Hauptquellcode verwendet werden.
Im Hauptquellcode?
Wie auch immer, wenn ich eine Testfunktion ohne Parameter nehme funktioniert es ja einwandfrei..ShadowTurtle schrieb:
Und Funktionsaufrufe (mit einem String) werden immer noch so gemacht:
highlight("c-code")
!Das wiederrum funktioniert leider nicht. (Also in Verbindung mit onLoad.)
Ich deute jetzt einfach mal auf die Stückchen
highlight(c-code)
undhighlight(\"c-code\")
hin, wie du sie hier angewendet hast:cooky451 schrieb:
Die Beispiele hier sind alle Parameterlos. Versucht habe ich schon:
<iframe name="c-code" src="code/test.c" width="800" onLoad="highlight("c-code")"></iframe> <iframe name="c-code" src="code/test.c" width="800" onLoad="highlight(c-code)"></iframe> <iframe name="c-code" src="code/test.c" width="800" onLoad="highlight(\"c-code\")"></iframe>
Ok wobei
c-code
nur ein indirekter Fehler sein dürfte wenn ein schlechter Javascript-Debugger am start ist. Aber das ist doch eigentlich wurst.cooky451 schrieb:
Nachdem ich das Ganze einfach mal mit einem Delay getestet habe, musste ich feststellen, dass man auch nicht den sauberen Text bekommt, sondern von HTML-Codes kaputt gemacht Zeichen. (&xy, etc.)
Diese komischen HTML-Codes sind sogenannte HTML-Entities und auch sehr sinnvoll. Du bräuchstest einen HTML-Entitie decoder in Javascript programmiert. Also ein Ding welches die Zeichen selbst nochmals umkonvertiert.
Sollten die Quellcode Dateien jedoch auf einen Linux/Unix-Server liegen, dann brauchst du solch einen decoder nicht einmal.
Gehe hin und mache eine Einstellung, dass ein bestimmter Content-Type + Mime gesendet wird sobald eine File aus dem Quellcode-Ordner gelesen werden soll. Dafür müsstest du dann auch via SSH (oder ähnlichem) an den Sources arbeitest von der du eine Darstellung möchtest. Wie das genau geht kA. aber entsprechende Tools gibt es, soweit weiss ich noch.Ansonsten musst du halt ein komplettes Code-Controlling-System verwenden (siehe Rat zur Verwendung eines bereits fertigen Systems).
cooky451 schrieb:
So langsam wird mir ein einfaches C++ Programm doch schmackhaft, oh man, was ein Gefrickel..
Das Programm muss nicht unbedingt in C++ geschrieben sein. Es kann auch in PHP geschrieben sein. Für die Ausführung von PHP benötigst du kein Apache, XAMPP oder ähnliches. Das ist meistens ein großer Irrtum dem die meisten unterliegen.
Mit PHP kannst du also auch gleich, wie bereits von Shade Of Mine empfohlen GeSHi verwenden.
cooky451 schrieb:
Da ich jetzt aber den Text habe wäre erst mal alles geklärt, nur das onLoad() wäre halt noch schön.
<body onload="funktion();">
-
cooky451 schrieb:
So langsam wird mir ein einfaches C++ Programm doch schmackhaft, oh man, was ein Gefrickel..
Weil das was du willst Bloedsinn ist. Die korrekte Loesung habe ich dir schon gesagt. Sind vielleicht 4 Zeilen PHP Code.
HTML und JavaScript sind fuer das was du machen willst halt einfach die falsche Technologie.
-
Shade Of Mine schrieb:
cooky451 schrieb:
So langsam wird mir ein einfaches C++ Programm doch schmackhaft, oh man, was ein Gefrickel..
Weil das was du willst Bloedsinn ist. Die korrekte Loesung habe ich dir schon gesagt. Sind vielleicht 4 Zeilen PHP Code.
HTML und JavaScript sind fuer das was du machen willst halt einfach die falsche Technologie.
Du wusstest doch aber vorher nicht genau ob er überhaupt die Möglichkeit hat PHP einzusetzen. Schließlich gibt es auch Dinge die nur Clientseitig funktionieren sollen.
Da kann man zwar auch PHP empfehlen (habe ich doch auch getan!), aber nicht wirklich ist jemand darauf eingegangen. Kein Wunder, schließlich wurde die Idee (für ein externes Programm) auch schon im vorfeld ausgeschlossen.Ich denke hier lag einfach ein Kommunikationsproblem und gleichzeitiger Hilfsbedarf vor. Wohlgleich meine Hilfe zwar da war, aber im grunde obsolet ist/war, weil (und da muss ich zweifelsohne zustimmen):
Shade Of Mine schrieb:
HTML und JavaScript sind fuer das was du machen willst halt einfach die falsche Technologie.
und folgendes die ganze Zeit hinweg im Raum stand:
cooky451 schrieb:
Shade Of Mine schrieb:
Du hast irgendwo Quellcode liegen. Diesen willst du jetzt in eine HTML Datei mit Syntax Highlight umwandeln. Und dafür willst du jetzt ein Tool haben.
Ne, da könnte ich mir ja einfach ein Programm für schreiben. Ich habe einmal eine HTML-Datei und einmal Quel....