ugrás a tartalomhoz

CDATA manipulálás JavaScripttel

Wabbitseason · 2007. Aug. 17. (P), 11.56
Létezik egy olyan nyomdászati fogalom, hogy "árvasor/fattyúsor". Ha egy oldal tetejére az előző oldalon kezdődő bekezdésből csak egyetlen sor lóg át, vagy ha egy oldal alján induló többsoros bekezdés számára csak egy sor marad és a többi sor átcsúszna a következő oldal tetejére, az ilyen magányos sorokat esztétikai okból el szokták tüntetni.

Megrendelő megalkotta e fogalom webes változatát, melynek lényege, hogy többsoros szövegnél az utolsó sorban legalább két szónak kell lennie.

Ez könnyen megoldható úgy, hogy a mondatok utolsó két szava közötti szóközt nbsp-re cseréljük. Ilyen "mondatvégi" szópárnak minősül természetesen egy CDATA utolsó két szava, hiszen nincs rá garancia, hogy írásjellel végződik a szöveg.

Technikai okból ezt nekem most JavaScripttel kell megoldanom.

Hogy ne kelljen túl bonyolult reguláris kifejezést írni (hogy például HTML forrás attributúmainak tartalmához ne piszkáljak hozzá), arra gondoltam, szép lenne, ha a JavaScript függvény a DOM-nak csak a CDATA részével dolgozna.

Van valami gyors és elegáns megoldás a CDATÁ-k kigyűjtésére? Nem szeretnék végigmenni az összes node-on és egyesével vizsgálgatni, mert érzésem szerint az túl lassú volna.
 
1

mégse

Wabbitseason · 2007. Aug. 17. (P), 12.37
Hejj, földlakók, tévedtem. Úgy látszik, még reggel volt. Dehogy a CDATÁ-t akarom én piszkálni, hanem a sima text node-okat! :)

Tárgytalan a kérdésem, elnézést mindenkitől, akit fölöslegesen ide fárasztottam. :)
2

js?

wiktor · 2007. Aug. 17. (P), 12.46
Biztos, hogy kell ehhez js? Nem fognak ugrálni a bekezdések, ahogy cserélgeted a space-eket? Én lehet, hogy már szerveroldalon kicserélném hard spacere ezeket. Lehet ebből hátrány?
3

Néha muszáj gányolni :)

Wabbitseason · 2007. Aug. 17. (P), 13.29
Ebben az esetben nem férek hozzá a szerverhez, ezért kliensoldalról kell megoldanom. De nem jelent problémát, még onload előtt lefut ez a script. (Hasznos: http://www.thefutureoftheweb.com/blog/adddomloadevent)
4

Szerver oldalon hogy?

Nagy Gusztáv · 2007. Aug. 17. (P), 15.53
Szerver oldalon hogy döntöd el, hogy egy ismeretlen kliens ismeretlen felbontásával, betűméretével stb. hány szót fog egy sorba tenni? Max. ha képet generálva csinálsz honlapot.
Szerintem ez a kérés az, amiről lebeszélni kell a megrendelőt.
5

Egyszerűbb a helyzet!

Wabbitseason · 2007. Aug. 17. (P), 17.04
Nem vizsgáljuk, hogy ténylegesen melyik bekezdés az, amelyiknél előfordul olyan utolsó sor, amelyikben egy szó egyedül maradna. Egészen egyszerűen minden mondat és text-node végénél az utolsó két szó közti szóközt törhetetlenre cserélem, tehát a látogató akárhogy is nézi az oldalt, az utolsó sorokban mindig legalább két szó látszik -- extrém esetek kivételével, természetesen.

Ez "brute force", olyan, mint amikor szóelválasztásnál minden szótaghoz diszkrét elválasztást rak az ember, aztán amelyiknek kell, az szépen aktiválódik, a többi pedig csöndben, áhítattal lapul. :)
6

egyetértek

wiktor · 2007. Aug. 17. (P), 19.07
Én is erre gondoltam. :) Hogy most regexp-pel vizsgálsz </p>-ket vagy xml fát jársz be ez már ízlés kérdése. :) Én a js-től - mint már említettem - azért fáznék egy kicsit, mert félnék tőle, hogy "ugrálni" fognak a bekezdések. Nem vagyok benne biztos, hogy az onload előtti domready segít, de kiváncsian várom a fejleményeket. :)
7

Jaja

inf · 2007. Aug. 18. (Szo), 10.54
Ja, szerintem is érdekes téma.
Egyébként nem hiszem, hogy nagyon ugrálnának a bekezdések, persze ez majd kiderül :-)