Text mit Zeilenumbruch mit javascript ausgeben
mango
- javascript
0 ChrisB0 André Laugks0 fastix®
Hi,
ich kriege aus einer Datenbank Text mit Zeilenumbrüchen.
Dieser Teil wird mit php realisiert.
Dieser Text soll nun mit javascript in ein Textfeld gegeben werden.
Mit php gebe ich das aus:
echo '
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="' . (nl2br($row->inhalt)) . '";
-->
</script>
';
Was nun in html ausgegeben wird ist das folgendes:
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="foo<br />
<br />
bar";
-->
</script>
Das heißt, der Text wird auf mehere Zeilen verteilt, in html gibt es ein Problem und der Text wird nicht angezeigt.
Wie kann ich das lösen?
Danke!!
Hi,
Was nun in html ausgegeben wird ist das folgendes:
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="foo<br />
<br />
bar";
-->
</script>
> Das heißt, der Text wird auf mehere Zeilen verteilt, in html gibt es ein Problem und der Text wird nicht angezeigt.
Nein, das Problem gibt es in JavaScript - weil dort ein Textliteral nicht über Zeilengrenzen hinweg gehen darf.
Ersetze die Zeilenumbrüche serverseitig durch das Zeichen für einen JavaScript-Zeilenumbruch (oder gar nichts, denn BR in HTML wird ja schon einen bewirken).
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hi,
Nein, das Problem gibt es in JavaScript - weil dort ein Textliteral nicht über Zeilengrenzen hinweg gehen darf.
um was wetten wir?
Cheatah
Hi,
Nein, das Problem gibt es in JavaScript - weil dort ein Textliteral nicht über Zeilengrenzen hinweg gehen darf.
um was wetten wir?
Ja Schatz, ich hab' schon an dich gedacht, während ich das geschrieben habe ... ich weiß, es gibt wohl die Möglichkeit, das mit \ am Zeilenende zu machen(?), aber das war glaube ich nicht „offiziell“, die Diskussion hatten wir schon mal mit Mathias.
MfG ChrisB
Hi,
Ja Schatz, ich hab' schon an dich gedacht, während ich das geschrieben habe ...
hach, so beginnen die besten Dialoge! Es erinnert mich an jenes glorreiche Ereignis:
Sie: "Schatz, ich liebe Dich!"
Er: "Jaja, Du mich auch."
Der hierauf folgende Diskurs kann ein Weilchen dauern ...
ich weiß, es gibt wohl die Möglichkeit, das mit \ am Zeilenende zu machen(?), aber das war glaube ich nicht „offiziell“, die Diskussion hatten wir schon mal mit Mathias.
innerHTML ist ebenfalls nicht offiziell, aber dennoch (u.U.) empfehlenswert.
Cheatah
Hallo,
hach, so beginnen die besten Dialoge! Es erinnert mich an jenes glorreiche Ereignis:
Sie: "Schatz, ich liebe Dich!"
Er: "Jaja, Du mich auch."
aus deiner eigenen Erfahrung? ;-)
Der hierauf folgende Diskurs kann ein Weilchen dauern ...
Och, ich könnte mir ebensogut vorstellen, dass er ruck-zuck beendet ist. Und zwar endgültig.
Ciao,
Martin
Hi,
Sie: "Schatz, ich liebe Dich!"
Er: "Jaja, Du mich auch."
aus deiner eigenen Erfahrung? ;-)
nein, mir fehlen keinerlei Gliedmaßen, aber danke für die Sorge ;-)
Der hierauf folgende Diskurs kann ein Weilchen dauern ...
Och, ich könnte mir ebensogut vorstellen, dass er ruck-zuck beendet ist. Und zwar endgültig.
Och, wenn man es geschickt anstellt, kann das sicher ein erfüllter Abend sein *g*
Cheatah
Hi,
Sie: "Schatz, ich liebe Dich!"
Er: "Jaja, Du mich auch."Der hierauf folgende Diskurs kann ein Weilchen dauern ...
Na ja, das ist ja auch 'ne mindestens zweideutige Antwort (und beide Versionen wird sie nicht mögen).
ich weiß, es gibt wohl die Möglichkeit, das mit \ am Zeilenende zu machen(?), aber das war glaube ich nicht „offiziell“, die Diskussion hatten wir schon mal mit Mathias.
innerHTML ist ebenfalls nicht offiziell, aber dennoch (u.U.) empfehlenswert.
Sischer, sischer - aber stattdessen Zeilenumbrüche gegen \n auszutauschen, tut auch nicht weh; serverseitig generierter JS-Code, der nur Daten transportieren soll, muss nicht unbedingt lesbar sein, und wenn er doch mal anschließend manuell bearbeitet werden soll, dann sehe ich die Gefahr, dass bspw. eine Zeile „ergänzt“ wird - und dann leitet \ ggf. ein Steuerzeichen ein, und es gibt wieder einen Fehler, weil das Zeilenende dann nicht mehr stimmt ...
MfG ChrisB
Hi,
Der hierauf folgende Diskurs kann ein Weilchen dauern ...
Na ja, das ist ja auch 'ne mindestens zweideutige Antwort (und beide Versionen wird sie nicht mögen).
korrekt. Dabei fällt mir ein, dass ich mal 'ne Sammlung vernichtender Antworten beginnen sollte ... "Schönes Wetter da draußen!" - "Hier drinnen ist es aber auch nicht schlecht."
Sischer, sischer - aber stattdessen Zeilenumbrüche gegen \n auszutauschen, tut auch nicht weh; serverseitig generierter JS-Code, der nur Daten transportieren soll, muss nicht unbedingt lesbar sein,
Zustimmung, außer vielleicht während der Arbeit.
und wenn er doch mal anschließend manuell bearbeitet werden soll, dann sehe ich die Gefahr, dass bspw. eine Zeile „ergänzt“ wird - und dann leitet \ ggf. ein Steuerzeichen ein, und es gibt wieder einen Fehler, weil das Zeilenende dann nicht mehr stimmt ...
Dieses Problem sehe ich eher als marginal an, und mir ist das schon *verflucht* *oft* passiert ;-)
Cheatah
@@ChrisB:
nuqneH
ich weiß, es gibt wohl die Möglichkeit, das mit \ am Zeilenende zu machen(?)
In CSS-Expressions mache ich davon gern Gebrauch, um den Quelltext übersichtlich zu haben.
aber das war glaube ich nicht „offiziell“
[ECMA-262], §7.8.4:
LineContinuation :: \ LineTerminatorSequence
Das sollte offiziell genug sein.
Qapla'
Hi,
[ECMA-262], §7.8.4:
LineContinuation :: \ LineTerminatorSequence
Das sollte offiziell genug sein.
Ja, gut - wenn man dann auch von entsprechender Browser-Unterstützung ausgehen darf (wird wohl).
MfG ChrisB
Hi,
Ja, gut - wenn man dann auch von entsprechender Browser-Unterstützung ausgehen darf (wird wohl).
ich kann nicht für Browser vor dem IE 5.0 sprechen[1], aber mindestens seit diesem Mistviech ist mir noch nichts untergekommen, was es nicht implementiert hätte. Und ich habe eine ziemlich sorgfältige QS-Abteilung im Rücken, die sich schon bei mir gemeldet hätte, wenn gewisse Werbeformen in unseren Diensten nicht mehr funktionieren würden :-)
Cheatah
[1] Für IE 5.2 Mac weiß ich es gerade nicht.
Hi!
aber das war glaube ich nicht „offiziell“
[ECMA-262], §7.8.4:
LineContinuation :: \ LineTerminatorSequence
Das sollte offiziell genug sein.
Und dazu die Bemerkung vor dem Absatz 7.8.5 nicht übersehen:
NOTE A line terminator character cannot appear in a string literal, except as part of a LineContinuation to produce the empty character sequence. The correct way to cause a line terminator character to be part of the String value of a string literal is to use an escape sequence such as \n or \u000A.
Lo!
@@dedlfix:
nuqneH
Und dazu die Bemerkung vor dem Absatz 7.8.5 nicht übersehen:
NOTE A line terminator character cannot appear in a string literal, except as part of a LineContinuation to produce the empty character sequence. The correct way to cause a line terminator character to be part of the String value of a string literal is to use an escape sequence such as \n or \u000A.
Das hatte ich zuerst gefunden, als ich nach "escape" gesucht hatte. Dann nach "LineContinuation" gesucht …
Qapla'
Hallo!
echo '
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="' . (nl2br($row->inhalt)) . '";
-->
</script>
';
Folgendes sollte Dir die Zeilenumbrüche entfernen.
~~~php
echo '
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="' . (preg_replace("/\r\n|\n/", '', nl2br($row->inhalt))) . '";
-->
</script>
';
André
Moin!
Folgendes sollte Dir die Zeilenumbrüche entfernen.
...
Ich glaube, folgende wäre billiger:
echo '
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="' . (preg_replace("/\r\n|\n/", '<br>', $row->inhalt)) '";
-->
</script>
';
P.S. Hatte old macintosh nicht mal "\r" als Zeilenumbruch?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
@@fastix®:
nuqneH
<script language="javascript" type="text/javascript">
<!--
document.getElementById("inhalt").value="' . (preg_replace("/\r\n|\n/", '<br>', $row->inhalt)) '";
-->
</script>
Die HTML-Auskommentierung von JavaScript-Code ist bestenfalls unsinnig, womöglich auch falsch.
Qapla'
Hi!
Folgendes sollte Dir die Zeilenumbrüche entfernen.
Stimmt, aber ...
document.getElementById("inhalt").value="' . (preg_replace("/\r\n|\n/", '<br>', $row->inhalt)) '";
... ich glaube nicht, dass nun stattdessen <br> auftauchen sollen. Richtig wäre '\n', also von PHP nicht aufgelösten Zeichen \ und n, die einen Zeilenumbruch in Javascript repräsentieren. HTML, das in Javascript-Strings steht, wird nicht aufgelöst sondern Zeichen für Zeichen wie alle anderen auch behandelt.
Bitte prüft eure "Lösungen", bevor ihr sie hier postet! (Oder beschränkt euch auf eine Erklärung.)
P.S. Hatte old macintosh nicht mal "\r" als Zeilenumbruch?
So alte Macs werden vermutlich nicht als Webserver eingesetzt.
Lo!