Zeilenumbruch in neuem Textknoten erzwingen?
Yadgar
- javascript
High!
Hat jemand von Euch eine Idee, wie ich einem an createTextNode() übergebenen String einen Zeilenumbruch einfügen kann? Weder \n, \n\r noch <br> funktionieren!
Bis bald im Khyberspace!
Yadgar
hi,
Hat jemand von Euch eine Idee, wie ich einem an createTextNode() übergebenen String einen Zeilenumbruch einfügen kann? Weder \n, \n\r noch <br> funktionieren!
Das, mein lieber Turbokapitalist [1], halte ich für unwahr.
Ein Textknoten, der ein Umbruchzeichen enthält, und beispielsweise als Kindelement in ein <pre> eingehängt wird, sollte durchaus das gewünschte Verhalten zeigen.
[1] Ich mag dieses Wort nicht, es ist so negativ besetzt ...
In meinen Augen bist du daher eher lediglich ein ziemlich denkfauler Kerl.
Und Kapitalismus hat ja doch noch immer irgendwie was mit Leistung zu tun, und dir zu unterstellen das du hier bisher eine solche erbracht hast, hieße ja vermutlich dir bitter Unrecht zu tun.
gruß,
wahsaga
High!
Das, mein lieber Turbokapitalist [1], halte ich für unwahr.
Ein Textknoten, der ein Umbruchzeichen enthält, und beispielsweise als Kindelement in ein <pre> eingehängt wird, sollte durchaus das gewünschte Verhalten zeigen.
In diesem Fall tut er das aber nicht, er wird auch nicht in ein <pre>, sondern in ein <div> eingehängt!
Hier ist der Code:
rboxtext = document.createTextNode("Luxemburger Str. 124, 50393 Köln\n"
+ "Tel. 0221-4200301 ~ Fax: 0221-442007\n"
+ "E-Mail: cawSchule@aol.com\n"
+ "Website: www.CAW-Computerschulung.de");
Oder liegt es einfach nur daran, dass ich nicht denke wie ein Nerd, wie immer das auch gehen soll, und mir deshalb anscheinend jegliches Verständnis von JavaScript fehlt?
Bis bald im Khyberspace!
Yadgar
hi,
In diesem Fall tut er das aber nicht, er wird auch nicht in ein <pre>, sondern in ein <div> eingehängt!
Ja, in _dem_ Fall hätte ich das auch nicht erwartet.
Oder liegt es einfach nur daran, dass ich nicht denke wie ein Nerd, wie immer das auch gehen soll, und mir deshalb anscheinend jegliches Verständnis von JavaScript fehlt?
Es liegt vermutlich daran, dass du nicht denkst wie jemand, der _HTML_ halbwegs verstanden hat. So jemand wüsste nämlich, dass normale Zeilenumbrüche in HTML, abgesehen von Sonderfällen, keinen Umbruch in der gerenderten Anzeige bewirken.
gruß,
wahsaga
High!
Es liegt vermutlich daran, dass du nicht denkst wie jemand, der _HTML_ halbwegs verstanden hat. So jemand wüsste nämlich, dass normale Zeilenumbrüche in HTML, abgesehen von Sonderfällen, keinen Umbruch in der gerenderten Anzeige bewirken.
Der Unterschied zwischen präformatiertem Text und normalem Fließtext in HTML ist mir durchaus geläufig -> http://home.arcor.de/yadgar/khyberspace/raytra-d_povbench.html
...aber wieso funktioniert dann auch <br> nicht?
Bis bald im Khyberspace!
Yadgar
hi,
...aber wieso funktioniert dann auch <br> nicht?
Weil das einen eigenen Knoten zwischen zwei Textknoten erfordern würde.
gruß,
wahsaga
Hallo,
In diesem Fall tut er das aber nicht, er wird auch nicht in ein <pre>, sondern in ein <div> eingehängt!
ja also - und was passiert mit Zeilenumbrüchen im Quelltext? Genau, sie werden als Whitespace behandelt.
rboxtext = document.createTextNode("Luxemburger Str. 124, 50393 Köln\n"
+ "Tel. 0221-4200301 ~ Fax: 0221-442007\n"
+ "E-Mail: cawSchule@aol.com\n"
+ "Website: www.CAW-Computerschulung.de");
Und wenn du dir den Text auf Source-Ebene ansiehst (vielleicht im DOM-Inspektor beim Firefox), dann wirst du ganz bestimmt sehen, dass du einen reinen Textstring mit drei Linefeeds hast (btw, wenn du Windows verwendest, sind Linefeeds allein nicht einmal richtige Zeilenumbrüche - aber das spielt hier eigentlich keine Rolle).
Oder liegt es einfach nur daran, dass ich nicht denke wie ein Nerd, ...
Vielleicht solltest du das "nicht" aus dem Satz streichen...?
Nochmal langsam zu Mitschreiben:
Was notieren wir im HTML-Quelltext, wenn wir einen reinen Zeilenumbruch ohne weitere semantische Bedeutung erzielen wollen? Genau, ein <br>. Und was haben wir dann auf DOM-Ebene? Genau, *drei* Knoten. Einen Textknoten, ein br-Element, einen weiteren Textknoten.
Jetzt klar, wo das Verständnisproblem liegt?
So long,
Martin
High!
Oder liegt es einfach nur daran, dass ich nicht denke wie ein Nerd, ...
Vielleicht solltest du das "nicht" aus dem Satz streichen...?
Ich bin bis jetzt immer davon ausgegangen, dass die Gedankenabläufe in einem typischen Nerd-Gehirn derart kompatibel zu den Strukturen handelsüblicher Programmiersprachen sind, dass "Lernen" für einen echten Nerd überhaupt kein Thema ist... dafür ist der Nerd dann aber auch grauenhaft unmusikalisch und face to face keine fünf Minuten zu ertragen! Kurzum: ich halte mich definitiv *nicht* für einen Nerd, weshalb ich die ausgebufften Progger-Profis auch konstant beneide...
Nochmal langsam zu Mitschreiben:
Was notieren wir im HTML-Quelltext, wenn wir einen reinen Zeilenumbruch ohne weitere semantische Bedeutung erzielen wollen? Genau, ein <br>. Und was haben wir dann auf DOM-Ebene? Genau, *drei* Knoten. Einen Textknoten, ein br-Element, einen weiteren Textknoten.Jetzt klar, wo das Verständnisproblem liegt?
So long,
Ja, offensichtlich... ich hatte nicht bedacht, dass so ein kleines banales <br>-Tag im DOM natürlich auch ein vollwertiger Elementknoten ist!
Die zu Code geronnene Konsequenz dieser Erkenntnis bewirkt dann auch endlich das, was sie soll:
rbox = document.createElement("div");
rbox.style.position = "absolute";
rbox.style.left = w-325*(w/1024);
rbox.style.top = lbox.style.top;
rbox.style.width = 320*(w/1024);
rbox.style.height = h/10;
rbox.style.color = "#29166f";
rbox.style.textAlign = "right";
rbox.style.fontFamily = "Arial";
rbox.style.fontWeight = "bold";
rbox.style.fontSize = 15*(w/1024);
pframe1.appendChild(rbox);
rboxtext1 = document.createTextNode("Luxemburger Str. 124, 50393 Köln");
br1 = document.createElement("br");
rboxtext2 = document.createTextNode("Tel. 0221-4200301 ~ Fax: 0221-442007");
br2 = document.createElement("br");
rboxtext3 = document.createTextNode("E-Mail: cawSchule@aol.com");
br3 = document.createElement("br");
rboxtext4 = document.createTextNode("Website: www.CAW-Computerschulung.de");
with (rbox)
{
appendChild(rboxtext1);
appendChild(br1);
appendChild(rboxtext2);
appendChild(br2);
appendChild(rboxtext3);
appendChild(br3);
appendChild(rboxtext4);
}
... aber ehrlich gesagt, ist das nicht ein bisschen viel Aufwand für ein popeliges kleines Textfeld, nur damit dessen Position, Größe und Schriftgröße dynamisch an die Bildschirmauflösung angepasst wird?
Andererseits finde ich es ja gut, dass auf diese Weise wenigstens all die Milliarden ansonsten untätig in den RAM-Modulen meines PCs herumgammelnden Bits ordentlich beschäftigt werden... und mit DOM 3.0 gibt es höchstwahrscheinlich noch mehr Overhead, wie fein!
Bis bald im Khyberspace!
Yadgar
Hallo Yadgar,
... aber ehrlich gesagt, ist das nicht ein bisschen viel Aufwand für ein popeliges kleines Textfeld, nur damit dessen Position, Größe und Schriftgröße dynamisch an die Bildschirmauflösung angepasst wird?
du kennst css? Du kennst die Einheiten % und em? Du weißt, dass die Bildschirmauflösung nichts mir der Größe des Browserfensters zu tun hat?
Gruß, Jürgen
High!
du kennst css? Du kennst die Einheiten % und em? Du weißt, dass die Bildschirmauflösung nichts mir der Größe des Browserfensters zu tun hat?
Offensichtlich, denn beim Verkleinern des Fensters wird meine Seite nicht neu gerendert...
Zumindest die Eckenposition eines Bereichs muss ich aber doch absolut angeben - oder täusche ich mich da?
Bis bald im Khyberspace!
Yadgar
Hallo Yadgar,
wenn du die Größe und Lage von Objekten in % angibst, skaliert das mit der Fensterbreite:
<div style="margin-left:20%;width:50%;height:50%;border:1px solid black;font-size:2em">Etwas Text</div>
<div style="margin-left:5em;width:5em;height:5em;border:1px solid black;font-size:2em">Etwas Text</div>
Die Größe em skaliert mit der Defaultschriftgröße des Browsers.
Gruß, Jürgen