čtvrtek 5. června 2003

Nastavení písem v prohlížečích

Pořád se mi něco nezdálo na písmu stránek Dagblogu, když jsem je prohlížel v Internet Exploreru. Nepřikládal jsem tomu však zvláštní prioritu, neboť jsem si to vysvětlil nestandardním chováním prohlížeče. V Mozille, kterou používám běžně při práci s internetem, bylo písmo v pořádku.

Zaroveň jsem nedávno narazil na Velký test písem , který provedl Pixy. V připraveném průzkumu se snažil, zjistit chování jednotlivých prohlížečů(v závislosti na operačním systému) na nastavený typ písma, mimochodem výsledky jsou volně dostupné. K zhodnocení naměřených(získaných) hodnot chování prohlížeče na různý typ písma, přistoupil v článku v článku Písma v prohlížečích podruhé, zde najdeme podrobný popis chování prohlížeče na různý typ písma( dle rodin písem) a zároveň rady jak co nejlépe písmo nastavit.

Přes tento velice zajímavý článek jsem se dozvěděl, že je naprosto nevhodné používat písma typická pro Windows v CE verzi ("Arial CE", "Verdana CE"). Nějak jsem si tento závěr zapamatoval a včera když jsem Dagblog shlédl v Internet Exploreru mi to došlo. V nastavení typu písma v CSS jsem samozřejmě, CE používal a dokonce jsem je měl uvedené jako první. Po provedení úpravy, použil jsem doporučení pro typ Verdana 1, se diference mezi písmem již neprojevuje.

středa 4. června 2003

JavaScript a sdílení proměnných mezi okny

Občas řeším opravdu velice zvláštní problémy. Bylo třeba sdílet určitou hodnotu(identifikátor nutný pro odeslaní rodičovského formuláře s nastavením z dceřiného okna) mezi rodičovským oknem a oknem dceřiným. V podstatě jsou tři známé a používané metody.

  • hodnotu si předám v parametru a zpracuji na serveru
  • hodnotu si předám v URL(GET) a získám rozborem URL na klientu
  • hodnotu z rodičovského okna získám přes formulář využitím objektu opener

Nyní se dostanu k první větě otázkou:"Proč zvláštní problémy ?". Rád zkouším nové cesty a proto, že jsem lenoch a nechtělo se mi patlat s ani jednou z předešlých metod, pohlédnul jsme se po jiném řešeni. Napadlo mě, že je možné rodičovskému oknu, lépe řečeno objektu window, zaregistrovat proměnnou, která by se naplnila při načtení stránky nebo kdykoliv jindy. K této proměnné je pak možno přistupovat přes objekt opener.

Řešení má tu výhodu oproti ostatním uvedeným, že je menší v rozsahu klientského skriptu, není třeba provádět na straně serveru a ani vytvářet element input s atributem hidden, který bychom četli. Řešení nepřímo ukazuje i další výhodu a to, že místo proměnné bychom mohli zaregistrovat ovladač události(vlastní funkci), který by tak byl dosažitelný (čti volatelný) s dceřiného okna.

Praktická ukázka kódu

  Rodičovské okno:
  <script type="text/javascript" > 
    //registrace globalni proměnné objektu window
    window.foo = "acme"; 
  </script>

  Dceřiné okno:
  <script type="text/javascript" > 
    //načtení proměnné rodičovského okna
    var parentValueFoo = opener.window.foo;
  </script>

Jak je vidět řešení je opravdu velice jednoduché, ale naprosto vyhovující. V jednoduchosti je síla.