webdesign, webhosting, software, sítě, databáze
Každý problém má své řešení.

Aktuality

PF 2019 (21.12.2018)

AIKEN Vám přeje veselé Vánoce a mnoho zdraví, štěstí a úspěchů v roce 2019.

Vydání knihy Staré/nové kutnohorské pověsti (13.12.2017)

Vydali jsme výpravnou, celobarevnou knihu Staré/nové kutnohorské pověsti od akademické malířky Jitky Jelínkové. Knihu si můžete objednat v našem LinuxMarketu nebo zakoupit v kutnohorských knihkupectvích a na dalších místech.

další články ze sekce Aktuality...

Doporučujeme


Firemní blog

RoundCube a třísloupcové zobrazení (23.8.2013)

S rozmachem širokoúhlých monitorů se postupně mění také uživatelská rozhraní programů. Například při práci s poštou je dnes standardem třísloupcové zobrazení. Jak ho získat ve webmailu RoundCube?

Proč používat službu Přidej.cz? (22.3.2013)

Služba Přidej.cz spojuje hned tři hodnoty na jednom místě, a to zcela zdarma. Usnadňuje sdílení, posiluje SEO a nabízí přístup k zajímavým odkazům a k informacím o nich.

další články ze sekce Firemní blog...

Zajímavý bug

Že jsou webové prohlížeče, podobně jako všechny ostatní programy, plné nejrůznějších chyb, je věc zcela normální. Existuje ovšem jedna chyba ve zpracování CSS, kterou obsahují dlouho obsahovaly všechny nejrozšířenější prohlížeče kromě Opery.

Je známou realitou, že webové prohlížeče nezobrazují obsah tak, jak by si člověk přál. Dokonce ani tak, jak předepisují standardy a doporučení. Většinou je to ovšem systematická záležitost, takže se dá relativně snadno řešit. Navíc je daná chyba typická pro jeden konkrétní browser, jen výjimečně jich postihuje víc. Existuje však jedna poměrně stupidní chyba, se kterou se setkáme u celé řady prohlížečů. A co hůř, ona se projevuje jen někdy.

Představme si následující HTML soubor (DOCTYPE nyní vynechávám, ale dělá to se všemi, od HTML 4.01 Transitional až po XHTML 1.1):

<html>
<head>
<link href="style.css" rel="StyleSheet" type="text/css">
</head>
<body>
<div>
...
</div>
<p id="nefunguje">nefunguje</p>
</body>
</html>

Místo tří teček může být v podstatě cokoliv, například strukturovaný text, nejlépe s obrázky. Dokument vypadá vcelku normálně, a také normální je. Šťávu dostane až s přidáním CSS souboru (style.css):

#nefunguje {
  position: absolute;
  left: 20px;
  bottom: 20px;
}

Co na tom je, že? Jenže chyba lávky. Když si tento dokument, ať už bude onen "třítečkový" obsah jakýkoli, zobrazíte v Opeře (verze 8 nebo 9, za starší neručím), bude to vypadat přesně podle očekávání. Nápis "nefunguje" bude v levém dolním rohu, 20 pixelů zleva a zespoda od hranice obsahujícího bloku, tedy elementu body. Zde žádné překvapení, všechno funguje, jak má.

Mnohem zábavnější to ale bude, když použijete nějaký jiný prohlížeč. Týká se to MSIE všech verzí, Mozilly a Firefoxu (zřejmě všech verzí starších verzí; ty nejnovější jsou již opraveny) a Konqueroru (dtto). Výsledek bude nedeterministický. Někdy se to vykreslí správně, jindy zůstane nápis "nefunguje" trčet sice vlevo, ale někde mezi dolním koncem obrazovky a koncem stránky.

Následné chování se bude navíc lišit. Když se u MSIE na text najede kurzorem, skočí na správnou pozici, kdežto u zbývajících browserů tam zůstane trčet. Pravděpodobnost chybného chování je závislá na délce vloženého textu - čím delší, tím pravděpodobněji chyba nastane. Pokud jsou v textu obrázky, je výskyt chyby mnohem častější (s holým textem k tomu dojde opravdu jen zřídka). Vypadá to, že se pro umístění elementu použijí rozměry obsahujícího bloku, zjištěné v nějakém okamžiku - tyto rozměry se později změní, pozice už se ale neaktualizuje (resp. u MSIE se aktualizuje při najetí kurzorem).

Otázka je, co s tím. Řešení lze rozdělit do tří skupin:

  1. Systémové řešení. Samozřejmě spočívá v ohlášení chyby. I když o tomto bugu vím už dlouho, musím sebekriticky přiznat, že jsem to dosud nikde neohlásil. Sice v případě MSIE o nějaké reakci silně pochybuji, ale u Gecka a KHTML bych mohl docílit opravy chyby. Už jsem se rozhodl, chybu rozhodně nahlásím. I když se to podle bugzill moc nezdá, chyby byly nedávno opraveny. Systémovým řešením je tedy aktualizace na nové verze (a na Windows se vyhnout použití MSIE, minimálně do doby opravy chyby).
  2. Workaround. Prostě uvedenou věc nepoužívat, i když je to někdy komplikace. Nenapadá mě cesta, jak by šlo chybě zabránit. Možná by šel použít JavaScript + DOM, ale bylo by to nečisté, složité (pokud by se to mělo používat rutinně) a nefungovalo by to s vypnutým JavaScriptem.
  3. Používání fungujících browserů. Tento trochu komický nápad spočívá v tom, přesvědčit lidi, aby používali jen prohlížeče, které chybu neobsahují. Ale to je samozřejmě ještě o několik řádů méně pravděpodobné, že se podaří dosáhnout opravy chyby i u prohlížeče z Redmondu.

Takže jen čistě pro informaci - tato chyba tam prostě je, musí se s ní počítat, a já ji jdu ohlásit používat verze, ve kterých již chyba není. Vymalováno.


UPDATE: Pro Gecko to bylo hlášeno již v roce 2003 (bug 196937). Řešení dosud žádné. Jsem tedy velice skeptický.

UPDATE: Také pro KHTML to bylo ohlášeno, a to již v roce 2002. Něco se na tom řešilo, ale zůstává to tam stále. Zkusím provést nějaké experimenty a přihodit jim to tam.

UPDATE: Podle čerstvých zjištění byla chyba opravena jak v KHTML, tak v Gecku. Doporučuji tedy aktualizaci na nejnovější verze.

Zpět do sekce Firemní blog


AIKEN s.r.o.
Lorecká 465, 284 01 Kutná Hora
tel. 312 312 413, mobil 606 362 315
www.aiken.cz, aiken@aiken.cz

GEO: 049.95426, 015.27013