Autor Zpráva
juriad
Profil
Hledám jaký element, který vložit do stránky, tak aby neměl žádnou vizuální reprezentaci, ale byl přístupný z JS jako pojmenovaná záložka v DOMu (stačí nalezitelost podle id). Jde mi o řešení situace, kdy si musím poznamenat doprostřed seznamu (ul) nebo tabulky (table) nebo obecně kamkoli, kam později přidávat další záznamy.
Mám třeba menu:
<ul>
// tady bude seznam kontaktů, který je tvořen JS podle aktuální dostupnosti
<li>Settings ... </li>
<li>Logout</li>
</ul>

Skript bude postupně přidávat položky do seznamu na vyznačené místo a časem je zase odebírat. Jde mi o to, aby si nemusel pamatovat, že nový kontakt má vložit za poslední zapamatovaný (ten už může být smazaný) nebo před settings (protože settings se může někdy nezobrazovat a je křehké se odkazovat na něco nesouvisejícího).

Zatím mi jako nejlepší volba zdá <script>. Ten je povolený snad všude.
http://kod.djpw.cz/lwkb

Existuje lepší placeholder? Můžou být nějaké problémy s mým prázným <script>em?
Joker
Profil
juriad:
Nebylo by snazší dát elementu, za (před) který se má přidat, nějakou CSS třídu?
juriad
Profil
Jednodušší by to bylo, ale chci řešit problematiku, kdy část webu je seskládaná v JS a těch placeholderů je zpočátku za sebou hodně. Třeba o to menu se stará nějaká funkce, která (zjednodušeně řečeno) dostane pole funkcí, kterým předá element ul, do kterého si mají doplnit položky. A některé ty funkce ještě nemají data, která by do menu přidaly. Musí si tedy poznamenat místo, kam je později budou přidávat.
Třídy nelze použít, protože následující položka ještě nebyla vytvořena a předchozí nemusí existovat či může být také poznamenaná k pozdějšímu doplnění - docházelo by ke kolizím.
Str4wberry
Profil
Co je myšleno tím „je povoleno“? Aby to prolezlo validátorem? Myslím, že jinak není problém vložit kamkoliv cokoliv, co nemá nějaké styly, které by narušily vzhled, a není to blokové, aby to náhodou automaticky neukončovalo některé značky.

Klidně bych si pro přehlednost vytvořil vlastní element, třeba <placeholder>.

Jinak zrovna v tomto případě by mi přišlo možná logičtější použít seznamy dva.
juriad
Profil
Str4wberry:
Aby to prošlo validátorem nepotřebuji, spíš mi jde o to, abych si tím něco nepokazil. Nemám nic proti použití vlastní značky, jen jsem napřed hledal, zda něco vhodného již neexistuje. Volil jsem <script>, protože jsem tušil, že bude neškodný (prohlížeče jej znají a uživatelé jej používají pro vypisování (document.write) kde čeho).

Dva seznamy použít nechci kvůli tomu, že ten jeden velký seznam je absolutně pozicovaný (hover menu). A ono nejde jen o tento konkrétní příklad, hledám něco univerzálnějšího, co můžu použít na kterémkoli místě v DOMu a HTML.

Jak se třeba zachovají jednotlivé prohlížeče vůči neznámému tagu poblíž neukončené položky v seznamu? Bude placeholder potomkem li, nebo ul? V HTML 4 jsem našel jen zmínku, že je koncová značka optional, ale ne přesná pravidla zavírání (HTML 5 to popisuje pěkně).
Prý: „All browsers render unknown elements inline, i.e. as if they had a display:inline CSS rule. “ Ale když to zkusím, tak getComputedStyle(placeholder).display vrací 'none'.

Asi si to půjdu udělat testovací stránku a nechám si ji vyfotit v hromadě prohlížečů.
anonymníí
Profil *
juriad:
Neuzavírej jednotlivá LI a budeš mít jasno, tvá vložená značka bude potomkem LI. Obecně je to čistší řešení než dávat cokoliv do seznamu, co tam nemá co dělat.
Joker
Profil
juriad:
Tak pokud by šlo čistě o seznamy, dala by se použít i neviditelná položka <li>. Ale může to být v některých situacích nevýhoda (například kdyby něco počítalo počet položek podle toho, kolik potomků <li> daný prvek má).
Ale <script> vypadá dobře a šel by i logicky odůvodnit (když je to místo pro skriptovaný obsah… :) )
Chamurappi
Profil
Reaguji na juriada:
Nezkoušel jsem, jak se chovají různé parsery, ale pravidla pro umístění elementu <meta> bývají také někdy vykládána rozvolněně. Je neviditelný, je to jen jedna značka, může beztrestně nést i nějakou popisnou informaci (či nějaký parametr) v contentu…

Bude placeholder potomkem li, nebo ul?
Minimálně starý Explorer měl tendenci dávat do <li> i věci, které byly za výslovně uvedeným koncem </li>. Hledám, hledám… a nacházím, že jsem vlákno o tom před půlrokem nemohl najít :-)
Teď jsem přes DB našel, co jsem tenkrát hledal – IE6 se řídí formátem kódu? – hurá! Rovnou to můžu i zapomenout, protože se to zjevně týkalo jen Exploreru 6.
_es
Profil
juriad:
Script má aj viac možností. Nemusí byť prázdny, vtedy kód v ňom dokáže identifikovať aj „sám seba“ v štruktúre DOM, potom ani nie je nutný atribút id.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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