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ě.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Wed, 03 Jun 2009 22:25:45 +0200
changeset 4128b38fb1391b
parent 40 cc77526f46cf
child 42 4faa76a089e3
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á.
java/sql-vyuka/web/hlavni.js
     1.1 --- a/java/sql-vyuka/web/hlavni.js	Wed Jun 03 02:09:23 2009 +0200
     1.2 +++ b/java/sql-vyuka/web/hlavni.js	Wed Jun 03 22:25:45 2009 +0200
     1.3 @@ -91,13 +91,15 @@
     1.4  }
     1.5  
     1.6  function ajaxPruvodceZpet() {
     1.7 -    /** TODO: historie navigace */
     1.8 -    alert('Tato funkce se teprve připravuje.');
     1.9 +    try {
    1.10 +        window.back();
    1.11 +    } catch (e) { }
    1.12  }
    1.13  
    1.14  function ajaxPruvodceVpred() {
    1.15 -    /** TODO: historie navigace */
    1.16 -    alert('Tato funkce se teprve připravuje.');
    1.17 +    try {
    1.18 +        window.forward();
    1.19 +    } catch (e) { }
    1.20  }
    1.21  
    1.22  function ajaxPruvodceNasledujici() {
    1.23 @@ -113,7 +115,8 @@
    1.24  
    1.25  }
    1.26  
    1.27 -function ajaxPruvodceNaviguj(akcePruvodce, id, kod) {    
    1.28 +function ajaxPruvodceNaviguj(akcePruvodce, id, kod) {
    1.29 +    navigaceProhlizecem = false;
    1.30      if (ajax.readyState == 4 || ajax.readyState == 0) {
    1.31          ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true);
    1.32          ajax.onreadystatechange = function() {
    1.33 @@ -164,12 +167,20 @@
    1.34          window.location.hash = 'sql=' + encodeURIComponent(getSQL());
    1.35      }
    1.36  }
    1.37 +
    1.38 +/**
    1.39 + * Načte uloženou pozici průvodce.
    1.40 + */
    1.41 +function nactiURL() {
    1.42 +    nactiURL(false);
    1.43 +}
    1.44 +
    1.45  /**
    1.46   * Načte uložený stav aplikace z URL (SQL příkaz, průvodce).
    1.47   */
    1.48 -function nactiURL() {
    1.49 +function nactiURL(nacistSQL) {
    1.50      /** Načteme uživatelův SQL příkaz z URL do vstupního pole */
    1.51 -    if (getParametr('sql')) {
    1.52 +    if (nacistSQL && getParametr('sql')) {
    1.53          zobraz(getParametr('sql'), vstupniPole);
    1.54      }
    1.55      
    1.56 @@ -182,5 +193,19 @@
    1.57  }
    1.58  
    1.59  window.onload = function() {
    1.60 -    nactiURL();
    1.61 -}
    1.62 \ No newline at end of file
    1.63 +    nactiURL(true);
    1.64 +}
    1.65 +
    1.66 +var locationHash = location.hash;
    1.67 +var navigaceProhlizecem = false;
    1.68 +
    1.69 +setInterval(function() {
    1.70 +    if (location.hash != locationHash) {
    1.71 +        if (navigaceProhlizecem) {
    1.72 +            nactiURL();
    1.73 +        }
    1.74 +        navigaceProhlizecem = false;
    1.75 +        locationHash = location.hash;
    1.76 +    }
    1.77 +}, 200);
    1.78 +