21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Petrna
Profil *
Ahoj, píšu stránky s málem kódu a hodně "obsahu", takže mě vždy tluče do očí (a ztěžuje soustředění!), když je přerušovan nazalomitelnýma mezerama nebo třeba entitou shy pro volitelné rozdělení. - Teď jsem ke svému úžasu zjistil, že text zkopírovaný do HTML5 z OpenOffice, kde byly vloženy nezalomitelné mezery a to volitelné zalomení funguje úplně skvěle v každém prohlížeči, jakoby tam ty entity byly (ale není tam viditelného nic!)...

Znamená to tedy, že je to tam vloženo přímo jako třeba české uvozovky nebo mdash v utf-8? Prostě bez znaku, ale "rovnou osobně"?

A jaká je případně nevýhoda, kromě toho, že to není na první pohled vidět, kde jsou a kde ne?

Zdá se mi, že se přímo doporučuje v případě utf-8 vkládat to, co jde rovnou, bez entity - co tedy ty mezery?

Dík za trpělivost s amatérem!
Chamurappi
Profil
Reaguji na Petrnu:
Prostě bez znaku, ale "rovnou osobně"?
Je to tam jako znak, ale ne prostřednictvím entity. Pojmenované entity v HTML jsou skutečně jen náhradou znaku, nic chytřejšího v tom není – teoreticky by mohly obsahovat i delší text nebo dokonce i celý element (k čemuž by nejspíš časem dospěla specifikace HTML predefined icon-like symbols, kdyby ji býval někdo dokončil). Seznam toho, za co se nahrazují, najdeš třeba v HTML 4.
V XML se občas používají entity k překládání, v dokumentu je třeba něco jako &Menu.Safe; a přilinkované DTD (vybrané podle jazyka) definuje, za co se má entita nahrazovat.

A jaká je případně nevýhoda, kromě toho, že to není na první pohled vidět, kde jsou a kde ne?
Vůbec žádná. Je to i datově úspornější, kdybys chtěl počítat jednotlivé bajty.
Mimochodem, české uvozovky, tvrdá mezera a dlouhá i měkká pomlčka (­) jsou přítomné i ve windows-1250.

Ovšem argument, že tvrdá mezera není na první pohled vidět, bych úplně nepodceňoval. Roky jsem bojoval se dvěma problémy (které s entitami nesouvisí):
1) S uživateli WYSIWYG editoru, kteří neúmyslně a nevědomě tvořili texty s tvrdými mezerami na špatných místech — viz Jak zviditelnit tvrdé mezery?
2) S vlastním vylepšeným rozložením české QWERTY klávesnice. Klávesovým hmatem můžu snadno napsat českou uvozovku i pomlčku, ale dát si na AltGr+Space tvrdou mezeru byl hodně blbý nápad, protože jsem nechtěně tvořil spoustu kódů s tvrdou mezerou, když jsem při rychlém psaní nepustil včas AltGr. Takže jsem psal if(b < 4) s tvrdou mezerou, což způsobovalo záhadnou chybu, pokud skript nebyl načten ve správném kódování.

Teprve teď při psaní tohoto příspěvku si uvědomuji, jak velký odpor jsem si vlastně k neviditelné tvrdé mezeře vypěstoval :-)
I pokud píšu nějaký JS, tak pokud mám dát do řetězce tvrdou mezeru, napíšu ji raději jako \xA0, abych ji viděl, přestože na ni mám na klávesnici hmat (chytřejší než dřív).

Na druhou stranu, kdybych HTML kód s neviditelnou tvrdou mezerou nemusel nikdy editovat, asi bych formu znaku upřednostnil, protože – jak píšeš – &nbsp; je rušivé.
Petrna
Profil *
Díky za odpovědi, snad pomůžou k rozvaze.

Vážně je škoda, že editory, na rozdíl od office balíků, ty neviditelné znaky většinou nezobrazí. Některé jo, třeba to volitelné zalomení jako spojovník, ale to je jen z bláta do louže (matoucí). Pro mé specifické potřeby zřejmě bude "neviditelné nbsp" i tak užitečné, rozhodně tam, kde se už needituje + vkládám to snipetem - např. datum, adresy... apod.

Jinak jsem to u starších textů řešil tím, že jsem si prostě tu neviditelnou pevnou mezeru dal vyhledat, - no a to je zvýrazní -; a rychle jsem to projel, jestli nejsou na "divných" místech. Javaskript naštěstí moc nedělám.

PS: právě předevčírem jsem si přemapoval klávesnici, a hádej co - Altgr+Space = tvrdá mezera! :)
Bubák
Profil
Petrna:
Vážně je škoda, že editory, na rozdíl od office balíků, ty neviditelné znaky většinou nezobrazí.
Já si myslím, že editorů., co neodliší bílou mezeru od tvrdé, je menšina, ale třeba jsem měl jen štěstí, statistiku si nevedu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0