html/hlavni.js
author František Kučera <franta-hg@frantovo.cz>
Wed, 03 Jun 2009 22:25:45 +0200
changeset 41 28b38fb1391b
parent 6 817ec319b143
permissions -rw-r--r--
Experimentální implementace historie – fungují tlačítka zpět a vpřed v prohlížeči i v aplikaci (v navigační liště), ale nepracuje úplně správně.
Běží v nekonečné smyčce s čekáním 200 ms. Procházení historie nemění SQL příkaz (záměrně), ale přesto někdy nepracuje tak, jak se čeká.
     1 /** ID html prvků */
     2 const vstupniPole = 'vstupniPole';
     3 const vystupniPole = 'vystupniPole';
     4 const napovedniPole = 'napovedniPole';
     5 
     6 
     7 /**
     8  * Aby to fungovalo i v MSIE 6.
     9  * @return AJAXový objekt.
    10  */
    11 function getXmlHttpRequestObject() {
    12     if (window.XMLHttpRequest) {
    13         return new XMLHttpRequest();
    14     } else if(window.ActiveXObject) {
    15         return new ActiveXObject("Microsoft.XMLHTTP");
    16     } else {
    17         alert("Váš prohlížeč nepodporuje AJAX. Pořiďte si méně zastaralý prohlížeč, nejlépe Firefox.");
    18         return null;
    19     }
    20 }
    21 
    22 /** Náš AJAXový objekt. */
    23 var ajax = getXmlHttpRequestObject();
    24 
    25 /**
    26  * Vrací vstup od uživatele.
    27  * @return SQL příkaz zadaný uživatelem.
    28  **/
    29 function getSQL() {
    30     return document.getElementById(vstupniPole).innerHTML;
    31 }
    32 
    33 /**
    34  * Zobrazí text na požadovaném místě.
    35  * @param text text k zobrazení
    36  * @param kde id prvku, do kterého se má text vypsat
    37  **/
    38 function zobraz(text, kde) {
    39     document.getElementById(kde).innerHTML = text + '<p>&nbsp;<!-- Šťastné hackování ;-) --></p>';
    40 }
    41 
    42 /**
    43  * Zobrazí text ve výstupním poli.
    44  * @param text text k zobrazení
    45  **/
    46 function zobrazVystup(text) {
    47     zobraz(text, vystupniPole);
    48 }
    49 
    50 /**
    51  * Zobrazí text ve vstupním poli.
    52  * Požijeme pro načtení SQL příkazu z historie.
    53  * @param text text k zobrazení
    54  **/
    55 function zobrazVstup(text) {
    56     zobraz(text, vstupniPole);
    57 }
    58 
    59 /**
    60  * Zobrazí text ve poli pro nápovědu.
    61  * @param text text k zobrazení
    62  **/
    63 function zobrazNapovedu(text) {
    64     zobraz(text, napovedniPole);
    65 }
    66 
    67 /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
    68 function ajaxVykonatSQL() {
    69     if (ajax.readyState == 4 || ajax.readyState == 0) {
    70         ajax.open("GET", 'vysledek.html', true);
    71         ajax.onreadystatechange = vykonatSQLVypis;
    72         ajax.send(null);
    73     }
    74     //zobrazNapovedu('Nějaká nápověda k danému příkazu.');
    75     //zobrazNapovedu(escape(getSQL()));
    76 }
    77 
    78 /** Pomocná funkce – postará se o vypsání v pravou chvíli. */
    79 function vykonatSQLVypis() {
    80     if (ajax.readyState == 4) {
    81         zobrazVystup(ajax.responseText);
    82     }
    83 }
    84 
    85 
    86 /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
    87 function ajaxZobrazitHistorii() {
    88     if (ajax.readyState == 4 || ajax.readyState == 0) {
    89         ajax.open("GET", 'historie.html', true);
    90         ajax.onreadystatechange = zobrazitHistoriiVypis;
    91         ajax.send(null);
    92     }
    93 }
    94 
    95 /** Pomocná funkce – postará se o vypsání v pravou chvíli. */
    96 function zobrazitHistoriiVypis() {
    97     if (ajax.readyState == 4) {
    98         zobrazVystup(ajax.responseText);
    99     }
   100 }