Autor Zpráva
Fisak
Profil
Dobrý den. Rád bych udělal u iframu aby když se mi načte tak aby se mi zobrazil s posuvníkem dole.. Bohužel se tomu tak neděje.. Neví někdo proč? Předem děkuji za každou odpověď
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>

<!-- chat --> 
<iframe id="frame" src="./plugins/php/chat_frame.php""  width="79%" height="93%" frameborder="0" noresize></iframe>

<script>
$(window).load(function ()
{
  var $contents = $('#frame').contents();
  $contents.scrollTop($contents.height());
});
</script>
Chamurappi
Profil
Reaguji na Fisaka:
Protože ta stránka uvnitř ještě není načtená?
Fisak
Profil
Chamurappi:
jj je.. možná bude problém že tam je ajax který aktualizuje stránku každou vteřinu..
Fisak
Profil
toto je ten script kterej to načítá..
<script>
            Casovac();

            function NewHodnota() {
                hodnota = document.getElementById('hodnota');
                if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
                else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
                xmlhttp.onreadystatechange=function() {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                        hodnota.innerHTML = xmlhttp.responseText;
                }    
              }    
                xmlhttp.open("GET", "./../../?page=chat_frame", true);
                xmlhttp.send(); 
                Casovac();
            }
    
            function Casovac() { 
                 setTimeout("NewHodnota()", 1000);
            }
</script>
<span id='hodnota'><center><img src="./../../images/chat/load.gif" title="načítání" width="85px"/><br>Načítání...</center></span>
Chamurappi
Profil
Reaguji na Fisaka:
Proč nenastavuješ scrollTop v okamžiku, kdy přiřadíš do innerHTML nový obsah?
Fisak
Profil
Chamurappi:
a jak by to tedy mělo vypadat ??
Chamurappi
Profil
Reaguji na Fisaka:
Jestli je to posuvník celé stránky, tak stačí zavolat třeba scrollBy(0, 100000). Za nastavením hodnota.innerHTML.
Fisak
Profil
Chamurappi:
ano to funguje děkuji moc ale posouvám mi to jednou za vteřinu tzn. neni to pro chat moc dobré řešení pokud si chci přečíst např historii.. dalo by se to udělat jinak?
Chamurappi
Profil
Reaguji na Fisaka:
Běží-li stránka uvnitř rámu ve standardním režimu, tak by optimální řešení vypadalo asi nějak takhle:
var root = document.documentElement;
var automatika = true;
window.onscroll = function()
{
  automatika = root.scrollTop + root.clientHeight == root.scrollHeight;
};
… tenhle skript nastaví proměnnou automatika na true nebo false podle toho, jestli uživatel dojel na konec stránky. Pak ti stačí rolovat podmíněně:
if(automatika) scrollBy(0, 100000);
Fisak
Profil
Chamurappi:
Děkuji funguje to.. Jen by mě zajímalo jak udělat to aby když tam přijde nový příspěvek tak aby se to znova šouplo dolu.. možná to pujde nějakou podmínkou... viz. http://testchat.czechom.cz/?page=login nick: Jakpsatweb pass: 123456
Chamurappi
Profil
Reaguji na Fisaka:
jak udělat to aby když tam přijde nový příspěvek tak aby se to znova šouplo dolu
To je přeci nepříjemné, když si třeba chceš přečíst historii, ne?

Původně jsem ti chtěl dát v [#9] řešení, které zjistí jen změnu (ono není zase tak těžké ho vymyslet, určitě bys na to přišel sám) a nestará se vůbec o pozici posuvníku a o uživatelovu činnost, ale tohle mi přijde lepší. Vymysli raději jiný způsob, jak dát uživateli najevo, že se dole něco děje, než že mu škubneš obrazem.
Fisak
Profil
Chamurappi:
No tak co podmínka že pokud jsem uplně dole s posuvníkem tak se to stále bude držet dole.. protože teď je to tak že pokud přispěji nový vzkaz tak musim rolovat dolu abych si ho přečetl a to můžu být uplně dole ... A co řikáte na řešení iframy ? nebylo by lepší to dělat divy ?
Chamurappi
Profil
Reaguji na Fisaka:
co podmínka že pokud jsem uplně dole s posuvníkem tak se to stále bude držet dole
Teď by to teď mělo být, ne?
Proč máš ten chat jen přes část obrazovky?
Stránka uvnitř rámu ti neběží ve standardním režimu, takže můj skript nemusí správně fungovat ve všech prohlížečích.

nebylo by lepší to dělat divy ?
Asi bylo. Nemá moc smysl používat <iframe>, když v něm stejně taháš data AJAXem.
Fisak
Profil
Chamurappi:
No všiml jsem si toho taky že v chromu mi to běží normálně ale v exploreru a mozile to mám nějaké "zmutované". Zkusím to předělat do divů ... A máte ještě nějaké rady a doporučení ohledně tohoto chatu? Nebo není nějaký článek co by správný chat měl obsahovat?

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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