dynamischen text als HTML ausgeben

3dsmaxer

Erfahrenes Mitglied
hallo

Ich habe ein Textfeld "news" in das über
sagatext = new LoadVars();
sagatext.onLoad = function() {_root.news.text = sagatext.saga;}
sagatext.load("saga.txt");
der Text aus der Datei saga.txt importiert wird.
Das funktioniert soweit.

Nun habe ich mich daran gemacht den Text zu formatieren (teile unterstreichen, fett, groß schreiben... und Absätze einfügen.
In der Falsh-Hifle steht, dass man die Formatierung in HTML fornehmen kann, wenn man beim Textfeld "Text als HTML wiedergeben" anschaltet.

Mein Text schaut in etwa so aus:
<body>
<u>Biographie</u><p>
blablabla.....bla<br>
blaaaablaaa
</body>

Ich habe "Text als HTML wiedergeben" eingeschaltet und es klappt nicht. Woran kann es liegen?
Verwende Flash8.
 
Hi,

aus der Flashhilfe kannst Du entnehmen, welche html-Tags in Textfeldern unterstützt werden - <body> gehört z.B. nicht dazu, wohl aber <b> oder <u>.

Zudem musst Du den Text nicht über die .text- sondern über die .htmlText-Eigenschaft des Textfeldes zuweisen, damit die Tags interpretiert werden können.

Um keine Probleme mit Sonderzeichen und Umbrüchen zu bekommen (kommt z.B. ein &quot; in Deinem Text vor, interpretiert das LoadVars-Objekt das Zeichen "&" als den Beginn einer neuen Variable), setze ich html-Text meist in CDATA-Bereiche einer xml-Datei und verwende das XML-Objekt zum Einladen:

Inhalt der XML-Datei:
XML:
<content><![CDATA[
Hier kann dann mein Text mit <font color="#FF0000">html-Tags</font> stehen.<br>
<b>Umbrüche und Whitespaces werden ignoriert</b>
]]></content>
Code:
var xm = new XML();
xm.ignoreWhite = true;

xm.onLoad = function() {
	textfeld.htmlText = parseET(this.firstChild.firstChild);
}

xm.load("htmltext.xml");

function parseET(obj) {
	var str = obj.toString();
	var et = new Array('&lt;', '&gt;', '&amp;', '&quot;', chr(10), chr(13));
	var sg = new Array('<', '>', '&', '"', '', '');
	for (var i=0; i<et.length; i++) {
		str = str.split(et[i]).join(sg[i]);
	}
	return str;
}

Gruß
.
 
Zuletzt bearbeitet von einem Moderator:
vielen Dank!
Dein Tip klappt gut.

Leider funktioniert das Script nicht, wenn ich es in eine on(release){script} einbaue.....
Und Umlaute (ä,ü,ö) und einige schwedische Zeichen (Ð,Í,Ó), die für die Website enorm wichtig sind, gehen nicht.
Gibt dafür ne Lösung

Danke schonmal
 
Zuletzt bearbeitet:
Hi,

Du solltest Scripte, die aus mehreren Funktionen bestehen, auch nicht komplett in eine onRelease-Prozedur setzen. Notiere das Script auf der Hauptzeitleiste und rufe über Deinen Button lediglich die load-Methode des XML-Objektes auf:
Code:
on(release) {
    _root.xm.load("datei.xml");
}

Die Umlaute kannst Du anzeigen, indem Du a) Deine XML-Datei in UNICODE-Kodierung auslieferst (Editoren wie z.B: Notepad2 erlauben diese Einstellung), oder sie b) als html-Entitäten notierst und diese zum Umwandeln in der Methode "parseET" mit in die Liste aufnimmst:
Code:
// Beispiel mit Ü, ü, Ö und ö
var et = new Array('&lt;', '&gt;', '&amp;', '&quot;', chr(10), chr(13), '&Uuml;', '&uuml;', '&Ouml;', '&ouml;');
var sg = new Array('<', '>', '&', '"', '', '', 'Ü', 'ü', 'Ö', 'ö');

Gruß
,
 
Hi,

probiers mal mit
Code:
<img src="lalala.jpg">
- beachte aber, dass die Bilddarstellung in html-Textfeldern nicht wirklich ausgereift ist, und es beim Positionieren der Bilder (insbesondere beim Umbruchverhalten) oft bemerkenswerte Ergebnisse gibt.

Gruß
.
 
Vielen Dank für die Beantwortung dieser Frage.

Ich war wohl zu unaufmerksam. So ein dummer Syntax-Fehler.....

Nun ist alles klar.
 
Zuletzt bearbeitet:
Zurück