# HG changeset patch # User František Kučera # Date 1244060745 -7200 # Node ID 28b38fb1391babb8b50199fd96c24a8fcf50e593 # Parent cc77526f46cfea73b741a852dec36a1f30474625 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á. diff -r cc77526f46cf -r 28b38fb1391b java/sql-vyuka/web/hlavni.js --- a/java/sql-vyuka/web/hlavni.js Wed Jun 03 02:09:23 2009 +0200 +++ b/java/sql-vyuka/web/hlavni.js Wed Jun 03 22:25:45 2009 +0200 @@ -91,13 +91,15 @@ } function ajaxPruvodceZpet() { - /** TODO: historie navigace */ - alert('Tato funkce se teprve připravuje.'); + try { + window.back(); + } catch (e) { } } function ajaxPruvodceVpred() { - /** TODO: historie navigace */ - alert('Tato funkce se teprve připravuje.'); + try { + window.forward(); + } catch (e) { } } function ajaxPruvodceNasledujici() { @@ -113,7 +115,8 @@ } -function ajaxPruvodceNaviguj(akcePruvodce, id, kod) { +function ajaxPruvodceNaviguj(akcePruvodce, id, kod) { + navigaceProhlizecem = false; if (ajax.readyState == 4 || ajax.readyState == 0) { ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true); ajax.onreadystatechange = function() { @@ -164,12 +167,20 @@ window.location.hash = 'sql=' + encodeURIComponent(getSQL()); } } + +/** + * Načte uloženou pozici průvodce. + */ +function nactiURL() { + nactiURL(false); +} + /** * Načte uložený stav aplikace z URL (SQL příkaz, průvodce). */ -function nactiURL() { +function nactiURL(nacistSQL) { /** Načteme uživatelův SQL příkaz z URL do vstupního pole */ - if (getParametr('sql')) { + if (nacistSQL && getParametr('sql')) { zobraz(getParametr('sql'), vstupniPole); } @@ -182,5 +193,19 @@ } window.onload = function() { - nactiURL(); -} \ No newline at end of file + nactiURL(true); +} + +var locationHash = location.hash; +var navigaceProhlizecem = false; + +setInterval(function() { + if (location.hash != locationHash) { + if (navigaceProhlizecem) { + nactiURL(); + } + navigaceProhlizecem = false; + locationHash = location.hash; + } +}, 200); +