MSIE a element button: riešenie

Microsoft poskytuje kvalitnú technickú podporu k svojim produktom, technik z MS mi dokázal dať riešenie problému a chyba s tlačidlom <button>, ktorú obsahuje Internet Explorer, sa dá pomocou JS opraviť.

Internet Explorer vždy odosiela vo formulári text, ktorý sa zobrazuje ako popisok (label) tlačidla. V prípade tlačidla <button> to predstavuje hodnota innerText.

When the BUTTON element is submitted in a form, the innerText value is submitted.

Riešením je definovať atribút value a pri odoslaní formuláru zmeniť hodnotu innerText na hodnotu definovanú vo value. Tu však nastáva problém: IE nesprávne vyhodnotí vlastnosť value aj metódu getAttribute('value').

<html>
<body>
<form method="get" action="login.cgi" onsubmit="submit();">
  <button type="submit" id="btnAction" name="action" value="login">Prihlásiť</button>
</form>
</body>
</html>
function submit() {
var e = document.getElementById('btnAction');
alert(e.value);
alert(e.innerText);
alert(e.getAttribute('value'));
}

Vyzerá to, akoby IE nedokázal vrátiť skutočnú, definovanú hodnotu atribútu value. Technická podpora Microsoftu mi však bola schopná povedať, ako túto hodnotu získať:

var e = document.getElementById('btnAction');
alert(e.attributes['value'].value);

K atribútu treba pristupovať kolekciou attributes, ktorá vráti objekt attribute, čiže hodnotu atribútu získame pomocou vlastnosti value.

funkia submit(), opravujúca odosielanie dát, teda bude vyzerať takto:

function submit() {
var e = document.getElementById('btnAction');
e.value = e.attributes['value'].value;
}

Toto riešenie má však menšiu chybičku krásy: IE zmení aj zobrazovaný text tlačidla, potom odošle dáta na server a zobrazí novú stránku. Chvíľu teda tlačidlo obsahuje zobrazenú hodnotu vlasnosti value. Ak niekto pozná riešenie, ako tomuto zabrániť, poprosím ho zapísať to do komentárov.

Google patent

Vyhľadávač Google, ktorý určuje, akým smerom sa bude SEO uberať, podal na patentový úrad Patent 20050071741 ob­sahujúci techniky, ktoré zrejme Google používa na vypočítanie relevantnosti výsledkov vyhľadávania.

Google diferencuje medzi statickým a dynamickým obsahom stránok, statické nie sú penalizované za neaktualizovanie, dynamické musia svoj obsah meniť, aby boli aktuálne.
Rovnaké texty odkazov na rovnakú stránku môžu byť považované za SPAM. Odkazy na redakčné systémy v patičke nie sú zvýhodňované.
Zvýhodňované budú stránky podľa sezóny: v lete letné reakreačné strediská, v zime zimné.
Relevantnosť výsledku sa znižuje, ak užívateľ klikne na výsledok a hneď sa vráti späť na vyhľadávanie. Takéto stránky môžu byť považované aj za SPAM.

Viacej info: Google Patent 20050071741: Podrobně.

MSIE a element button

Máme takýto HTML kód:

<form action="login.cgi" method="get">
  <button id="btnAction" name="action" value="login">Prihlásiť</button>
</form>

A takýto JS kód:

var val = document.getElementById('btnAction').getAttribute('value');

Otázky:

  1. Akú hodnotu bude mať premenná val v uvedenom JS kóde v prehliadači Internet Explorer (Win)?
  2. Aké dáta budú a) podľa štandardu, b) v MSIE/Win odoslané na server po kliknutí na tlačidlo?
    1. login.cgi?btnAc­tion=login
    2. login.cgi?acti­on=login
    3. login.cgi?btnAc­tion=Prihlásiť
    4. login.cgi?acti­on=Prihlásiť

Azet a Centrum

Len mne sa zdá, že Azet ošľahol dizajn od Centra? :-O Časť služieb má nový dizajn, časť starý a zvyšná časť klasicky „nemá žiaden“, lebo tento odfláknutý kód sa v Mozille nezobrazí správne.

Aktívna oblasť CSS menu

ukážka aktívnej oblasti navigácie

Robím grafický návrh, ktorý obsahuje vertikálne menu s vysúvacími subpoložkami a samozrejme je riešené pomocou CSS. Veľký problém CSS menu je v tom, že sa okamžite skryjú, pokiaľ sa myš dostane mimo elementu. Je teda potrebné túto aktívnu oblasť zväčšiť. Oblasť je však potrebné zväčšiť tak, že ju nebude vidieť a nebude zakrývať obsah.

Menu je klasicky riešené pomocou <ul> a subpoložky sú absolútne poziciované v rámci rodičovského <li>. Ako teda zväčšíme aktívnu oblasť? Zväčšíme okraje <ul> pomocou padding.

#menu li  {
        position: relative;
}

#menu li ul {
        display: none;
        position: absolute;
        left: -10px;
        padding: 5px 10px 20px; /* z bokov 10px a z dola 20px oblasť */
        background: transparent; /* oblasť musí presvitať */
}

#menu li:hover ul {
        display: block;
}

#menu li ul li {
        background: white; /* subpoložky nebudú presvitať */
}

Spásna myšlienka, ale treba to ešte odladiť pre IE. Kde je problém? Ak <ul> má transparentné pozadie (čo je princíp funkčnosti aktívneho okraja – nesmi byť vidieť), môžeme mu zväčšovať padding koľko len chceme, IE zruší :hover okamžite, ako sa myš dostane mimo vnútornú oblasť prvku (oblasť medzi paddingom.

IE našťastie „rozšíri oblasť“, pokiaľ je nastavená ľubovoľná farba pozadia. Okrem priesvitnosti… Mal som chybný nápad – nastaviť farbu pozadia a použiť transparentný GIF. Obrázok je však aplikovaný nad farebnou výplňou, teda stále bolo oblasť vidieť.

Posledný výstrel do vzduchu: transparentné pozadie s nastaveným prehliadným obrázkom. Heuréka!!! V IE je aktívna oblasť priesvitná!

Výsledný kód pre IE:

#menu li ul {
        background: transparent url("/images/blank.gif");
}

Toto bolo riešenie chyby v IE s obtiažnosťou 1. Odstránenie ďalšej chyby v najrozšírenejšom a najhoršom prehliadači Microsoft Internet Explorer trvalo 20 minút. (Okrem pozadia som skúšal kombinovať margin/padding na <ul>, <li> a ďalšie iné triky.) Na záver článku sa chcem poďakovať veľkému bratovi z Redmontu, že vďaka jeho neschopnosti zvyšuje náklady na vývoj webových stránok. A už sa teším na ďalšie chyby, ktoré bude treba odlaďovať celý víkend >:o.

Problémy Flash prezentácií

Mnoho začiatočníkov v tvorbe stránok siaha po nástroji Macromedia Flash, pretože sa v ňom dajú vytvoriť rôzne dynamické efekt a plno blbiniek. Namiesto toho, aby sa títo začiatočníci zdokonaľovali v jazykoch (X)HTML, CSS alebo JS, radšej si nainštalujú nelegálne Flash a vytvárajú v ňom „stránky“.

Nevýhodou Flashu je jeho nízka prístupnosť a väčšinou si užívatelia musia zvykať na nové prostredie/ovlá­danie. Stránky, ktoré majú Flashové intrá môžu viac zaujať zákazníka, ale často sa stáva, že tieto intrá iba obťažujú. Pokiaľ je intro graficky nevyvážené, prípadne obsahu muziku, je len na škodu. Najväčší probém nastáva, keď užívateľ má otvorených viacej okien/záložiek a intro sa načíta, prehrá a keď sa zákazník vráti do okna/záložky, tak už vidí informácie, nie intro.

Ak intro nemá hudbu, je to ešte znesiteľné, zákazník iba prišiel o „zážitok“. Ak však má hudbu, býva obťažujúce. Autori argumentujú, že majú vo Flashi tlačidlo, ktorým sa dá hudba vypnúť a však nie vždy je to možné. Pokiaľ v inom okne vypĺňate formulár a pridávate prílohu k e-mailu, tak musí najprv nájsť súbor na disku, vybrať ho, nájsť okno, ktoré prehráva hudbu a nájsť tlačidlo, ktoré ju vypne. Pokiaľ užívateľ musí robiť niečo iné (čo je vždy na 10000% dôležitejšie, ako prezeranie si vašej prezentácie), nemá možnosť vypnúť hudbu. Väčšinou pritom počúva vlastnú muziku a vy mu iba do jeho obľúbenej hudby púšťate svoju obťažujúcu nahrávku.

Existujú profesionáli, ktorí vedia spraviť vynikajúce Flash prezentácie, bohužiaľ je však veľký počet tvz. „webdizajnérov“, ktorí tvoria neprístupné a nepoužiteľné prezentácie a navyše ani nepoužívajú legálny software.

Dve strany prístupnosti

V posledných dňoch uzreli svetlo sveta 2 nové veľké stránky (skoro portály): T-Mobile Slovensko a Svetový šampionát v hokeji 2005. Jedna z nich je prístupná vo veĺmi vysokej miere, druhá naopak absolútne neprístupná a iba sa na nej nejaká webdizajnérska spoločnosť nabalila.

Stránka T-Mobile je „tá dobrá“ :). Nenájdete tu už tabuľkami vytvorený layout (bohužial ich použili na zoskupenie niektorých obrázkov), ale je tvorený cez DIV+CSS. Sémantika nie je najlepšia (je vlastne minimálna), ale na naše podmienky je to dobrý počin. Stránkam na prvý pohľad dominujú obrázky. Všetky však majú správne vyplnený alt="" atribút. Použili tiež vlastný favicon.ico.

Oficiálna stránka svetového hokejového šampionátu 2005 je iba obyčajná, tabuľková stránka, ktorú je schopný spraviť každý po možno polroku učenia sa HTML. Plno obrázkov, žiadne alternatívne texty k nim. Stránka nemá žiadne obsiahnle informácie o zápasoch (Euro 2004 Portugal malo perfektný systém, ktorý zrejme nikto neprekoná) a celkovo je neprehľadná. Stránka je absolútne neprístupná a sú nezaujímavé.

Maximálna genialita je zobrazenie obrázku o rozmeroch 1648×2464 pixelov (838kB) na úvodnej stránke, kde má atribútmi zmenšenú veľkosť na 120×179px. Naozaj vynikajúce riešenie pre modemistov, ale zrejme v Rakúsku majú už len broadband pripojenia.

Najviac 2 pripojenia na server v IE

Prehliadač Microsoft Internet Explorer je neskutočne pomalý v načítavaní i zobrazovaní stránok. Síce správne dodržuje štandard HTTP a na jeden server sa pripája najviac 2 spojeniami, toto zdržuje načítavanie celej stránky. Narozdiel od Firefoxu alebo Opery neimplementuje HTTP Pipelines (čo výrazne zvyšuje rýchlosť načítania stránok, pretože je možné spojiť sa so serverom napr. 8 spojeniami).

Ak potrebujete vytvoriť prezentáciu, ktorá sa má rýchlo načítavať aj v IE, je dobré si vytvoriť novú doménu (napr. img.domain.com) a obrázky umiestniť na ňu. IE teda bude načítavať stránku s až 4 spojeniami (čo v jeho prípade znamená naozaj hypergalaktickú rýchlosť načítavania stránok :-O).

Toto riešenie sa však príliš nehodí na statické stránky, ktoré vyvíjate hlavne doma na PC, pretože vám nebudú fungovať obrázky.