Archiv pro měsíc: Duben 2010

Zavření okna prohlížeče bez dotazu

Pokud chcete pomocí Javascriptu (příkazem window.close();) zavřít okno prohlížeče, tak Internet Explorer zobrazí dotaz, zda toto okno chcete opravdu zavřít. Toto chování je pro návštěvníky webu poměrně otravné. Řešení kolují na různých fórech hromady. Jediné, které mi opravdu funguje je následující:

window.open('', '_self', ''); 
window.close();

Toť vše, tyto dva řádky stačí pro zavření okna. Není to sice ideální řešení, ale nic jiného nefunguje. Nebo víte o lepší možnosti?

Validace formuláře pomocí jQuery

Validaci formuláře lze zajistit bez zbytečného programování pomocí pluginu Validation pro jQuery. Domovská stránka pluginu je http://bassistance.de/jquery-plugins/jquery-plugin-validation/.

Základní kód nutný pro validaci je následující:

<script type="text/javascript" language="JavaScript1.2" src="./stranky/inc/jquery.validate.pack.js"></script>
<script>
$(document).ready(function(){
   $("#form").validate({
       errorPlacement: function(error, element) {
       if (element.parent("td").parent("tr").next("tr").children(".poznamka").length)
          error.prependTo( element.parent("td").parent("tr").next("tr").children(".poznamka") );
       else
          error.prependTo( element.parent("td").parent("tr").parent("tbody").parent("table").parent("td").parent("tr").next("tr").children(".poznamka") );
      }
    })

 });
 </script>
form action="formular.php" id="form" method="post">
<table>
<tr><td>Položka</td><td><input type="text" name="input" value="" class="required email"/></td></tr>
<tr><td></td><td class="poznamka"></td></tr>
<tr><td colspan="2"><input type="submit" value="Odeslat"/></td></tr>
</table>
</form>

Při odeslání formuláře bude tento zvalidován a input bude zkontrolován zda je vyplněn (required) a zda obsahuje platnou emailovou adresu (email). Velice jednoduché, že? 🙂 V obslužném JavaScriptu je parametr errorPlacement, v tomto případě se podle toho, zda jde o daný způsob vykreslení formuláře (v tabulce), zobrazí chyba v buňce třídy poznamka.

Takto lze poměrně jednoduše docílit spolehlivé validace formuláře bez nutnosti vymýšlet a programovat konkrétní validační funkce.

Windows XP – instalace systému na starý notebook

Dostal jsem se k notebooku IBM ThinkPad 600E na kterém jsem měl přeinstalovat stávající Windows XP – opět tímto systémem. Zpočátku to vypadalo jako jednoduchý lehce řešitelný problém (na tento notebook jsem již dříve instaloval Windows XP). Narazil jsem ale na řadu problémů, které by stály za zapsání.

Když jsem chtěl nabootovat z CD Windows XP, zobrazila se jen hláška „Stiskněte libovolnou klávesu pro spuštění systému z disku CD …“ a systém se zastavil. A nespustil. Což byl docela problém, zkusil jsem si vytvořit vlastní bootovací disk a instalátor Windows XP spustit ručně.

Vytvoření bootovacího disku

Řešením bylo vytvořit bootovací CD založené na Windows 98. Použil jsem obraz bootovací diskety tohoto systému.

Je možné stáhnout například zde: http://www.allbootdisks.com/downloads/Disks/Windows_98_Boot_Disk_Download49/Diskette%20Images/Windows98_SE.img (1,5 MB).

Protože není přítomen program SmartDrive, který zrychlí práci s diskem instlačního programu Windows XP (bez něj trvá instalace opravdu VELICE dlouho), musel jsem jej přidat na toto CD. Tento soubor je možné stáhnout například zde: http://www.uv.tietgen.dk/Staff/Mlha/download/DOS/microsoft/SMARTDRV.EXE (44 kB).

Samotné instalační soubory systému Windows XP je možné podle okolností umístit buď na CD nebo na pevný disk počítače. Mně se stalo, že nebylo možné přečíst některé soubory na CD (což se u starého hardwaru může lehce stát i u nového média), tak jsem musel instalovat z pevného disku. Soubory jsem na disk, který jsem připojil pomocí USB, zkopíroval ze stolního počítače.

Jakmile je bootovací disk vypálen na CD je možné z něj nastartovat počítač. Po spuštění je nutné zadat příkaz „smartdrv“, tím dojde ke spuštění programu SmartDrive. Smaotná instalace systému se spustí souborem winnt.exe ve složce i386.

Integrace Service Packu

Při instalaci je vhodné přidat k instalačním souborům i soubory Service Packu. Ušetří se tím další stahování a na pomalém hardwaru zdlouhavá instalace.

Pro sloučení slouží příkaz C:\XPSP3 /integrate:C:\XP, kde XPSP3 je název souboru se Service Packem a C:/XP je složka s instalačními soubory systému.

Sice je to vhodné, ale opět se mi stalo, že mi takto upravená instalace nevzala platný licenční klíč (tohoto chování jsem si všiml u originálních i neoriginálních licencí systému Windows XP). Takže jsem nakonec musel instalovat jen Windows XP SP2 a ServicePack 3 stáhnout pomocí automatických aktualizací.

Řešení – naformátování pomocí Fdisku

Po vytvoření tohoto CD se vše zdálo v pořádku. Instalace se bez problémů spustila, soubory potřebné pro instalaci se také zkopírovaly, ale následoval opět zádrhel. Po prvním restartu se zobrazila chyba „Soubor NTLDR.SYS nebyl nalezen. Stisknutím klávesy restartujete systém.“ (možná nejde o přesnou citaci, ale smysl byl takovýto). A to byl konec. Zkoušel jsem všechno možné, formátování, jinou verzi systému. Nic nepomohlo.

Přitom instalace Windows 98 probíhala v pořádku. Ale tento systém je v dnešní době poněkud těžce použitelný. Ze zoufalství jsem se jal zkoušet Linux. Vzhledem k „výkonnosti“ daného počítače jsem zvolil Xubuntu. Zdá se mi jako dobrá volba pro pomalé stroje. Pokus skončil celkem záhy blikáním kurzoru na černé obrazovce trvajícím hodinu a pokud bych mu neučinil přítrž, blikal by dodnes.

Takže tudy cesta nevedla. V tom mně ale napadla spásná myšlenka, disk jsem formátoval na počítači s Windows 7, co kdyby byla v tom, že se oddíl zapíše jiným způsobem. Nabootoval jsem DOS, spustil Fdisk, smazal oddíl, vytvořil nový, naformátoval jako FAT32 a spustil instalaci. A světe div se, vše bylo v pořádku. Instalace proběhla v pořádku a systém funguje jak má.

Chyba byla tedy v tom, že oddíl byl sice naformátovat jako FAT32 (případně NTFS), ale Windows 7 použije jinou velikost bloků než očekává boot manager Windows XP a skončí takovoutou chybou. Aspoň se tak domnívám. Takže příště až budu instalovat tento starý systém, vím proč to nefunguje.

Zástupce na hibernaci a spořič obrazovky

Vytvořením následujících zástupců lze rychle provést vybrané akce. V prvním případě se ihned hibernuje počítač. Ve druhém dojde k okamžitému spuštění nastaveného spořiče obrazovky. Uvedené příkazy fungují v systému Windows XP, je možné že i v některých jiných verzích, ale to jsem nezkoušel.
Hibernace: %windir%\system32\rundll32.exe powrprof.dll,SetSuspendState Hibernate
Spořič obrazovky se spustí vytvořením zástupce s odkazem na tento spořič, takže například C:\WINDOWS\system32\ssmyst.scr