Autor Zpráva
Why?!
Profil *
Ahoj, už nějakou dobu řeším problém historie při řešení pomocí AJAXU, nyní se o to snažím pomocí JS funkce location.hash. Můj problém je možná trochu složitější, protože historii potřebuji vytvořit po tom, co člověk něco zadá do vyhledávacího pole (tedy po události onkeyup se rovnou začnou pomocí ajaxu vypisovat výsledky hledání), přiřadil jsem si k němu tedy tuto funkci:

onkeyup="hledej(document.getElementById(\'search\').value);"


Která vypadá takto:

function hledej(val) {      
           if (''+val+'' == '') {             
            window.location.hash = ''; 
           } else window.location.hash = '#search='+val+'';
            
           ajax_loadContent('addover','zdroje/add.php?add='+val+'');           
} 

vše nádherně funguje, po zadání nějakýho textu do formuláře to změní link za "#", a vytvoří se nová položka v historii, takžde jde zmáčknout tlačítko zpět.

Problém však je v tom, že po stisku tlačítka se JEN změní link za mřížkou, ale javascript na stránce se znovu nezpracuje, takže stránka zůstává pořád stejná, dokud ji nerefreshnu - až potom se zpracuje to, že je v linku už jiná hodnota.

Nevíte, co by se dalo dělat a jak to řešit? Zkoušel jsem třeba really simple history, ale tam mi to nešlo navázat na událost onkeyup, jde dát jen jako js funkce do linku...

Za všechny rady předem dík.
_es
Profil
Why?!:
po stisku tlačítka se JEN změní link za mřížkou, ale javascript na stránce se znovu nezpracuje, takže stránka zůstává pořád stejná, dokud ji nerefreshnu
No tak si ten zvyšok skriptu daj do nejakej funkcie a tú funkciu zavolaj z funkcie hledej.
Why?!
Profil *
Jenže když zmáčknu zpět v prohlížeči, tak se neprovede žádná funkce, ani hledej :( pouze se změní adresa za mřížkou...
_es
Profil
Why?!:
Existuje udalosť detegujúca zmenu location.hash, no nepodporuje ju dosť prehliadačov (odkaz).
Najjednoduchšie je preto asi pravidelne overovať, či sa nezmenilo location.hash:
(function(){
var l = location, h = l.hash;
var t = setInterval(function(){if(h !== l.hash) h = l.hash, f();}, 50);
window.onhashchange = function(){clearInterval(t); f(); window.onhashchange = f; };
function f(){/* príkazy po zmene location.hash */}
})();
Ak prehliadač tú udalosť podporuje, tak je ten časovač zrušený, no až po prvom vyvolaní udalosti.
Neviem, či je nejaká finta ako detegovať podporu tej udalosti ešte pred udalosťou.
Nemám overené, či to takto funguje.
Why?!
Profil *
To je přesně, co jsem potřeboval, funguje, i když to prostě jen zkopíruju... Díky moc! :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: