Autor Zpráva
deader
Profil
Neví někdo prosím o nějakém návodu, podle kterého by při dynamickém načítání obsahu stránky používat tlačítko zpět a vpřed, jak to lze např. u Gmailu? Stačila by mně i jen teorie, jak by to mělo fungovat. Hledal jsem na internetu a našel tohle http://dojocampus.org/content/2009/05/17/using-dojo-back-button-and-bookmarks/. To mi ale asi moc nepomůže, že? Obsah načítám takhle:
function spust(akce, prvek) {
var vystup = document.getElementById(prvek); 
var hlavicka = document.getElementsByTagName('head')[0]; 
var dataLoader = document.getElementById('scriptLoader'); 
if(dataLoader) hlavicka.removeChild(dataLoader); 
script = document.createElement('script'); 
script.id = 'scriptLoader'; 
script.src = akce;
x = document.getElementsByTagName('head')[0];
x.appendChild(script); 
return false;	
} 

Moc děkuji za rady.
deader
Profil
Název právě zobrazeného obsahu by šel přidávat do url za # jako kotva. Kotvy se ukládají v prohlížeči do historie, a tak při klepnutí na zpět by došlo jakoby k přechodu na předchozí kotvu. Nevím však, jakou událost použít k odchycení této změny.
Chamurappi
Profil
Reaguji na deadera:
Kotvy se ukládají v prohlížeči do historie
Ne ve všech prohlížečích, když se je rozhodne změnit skript.
Nejsnazší je měnit adresu skrytého <iframu>.

jakou událost použít k odchycení této změny
Nevím přesně, jak je to s podporou události onhashchange, ale stoprocentní nebude. Můžeš pravidelně sledovat location.hash funkcí načasovanou přes setInterval.
deader
Profil
Nemusel bych měnit skriptem, ale mohl bych normálně odkazem:
<a href="#obsah" onclick="spust(obsah)">
. To by prohlížeče braly? Na kolik ms bych nastavil ten interval, aby nebyla znatelná odezva? Nezpomalovalo by to na slabších pc prohlížení stránky?
deader
Profil
Již jsem vymyslel řešení, ještě jsem to pořádně nevyzkoušel, ale mělo by to fungovat:
Někde bude iframe, ve kterém se bude měnit adresa na iframe.php?co=prave-zobrazeny-obsah. iframe.php vypíše JS, který zavolá fci z rodičovského okna, která načte požadovaný obsah. Při stisknutí zpět se změní adresa iframu na předchozí a tudíž dojde k načtení předchozího obsahu.
iframe.php:
<html><body>
<?php
if(isset($co))
echo '
<script>
window.parent.spust(\''.$co.'\',\'prvek1\');
</script>
';
?>
</body></html>


Děkuji za pomoc.

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:

0