Autor Zpráva
Fisak
Profil
Dobrý den. Mám script který my má odscrollovat až nakonec divu.. Bohužel tomu tak není.. Neví někdo proč?
<div id="chat-window"> 
<div id="chat">

<script>

            CasovacChat();

            function NewHodnotaChat() {
        var xmlhttp;
                var hframe = document.getElementById('hframe');
                if (window.XMLHttpRequest) var xmlhttp = new XMLHttpRequest();
                else var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
                 xmlhttp.onreadystatechange=function() {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                        hframe.innerHTML = xmlhttp.responseText;
            
            
                }    
              }    
                xmlhttp.open("GET", "./../../plugins/php/chat_frame.php", true);
                xmlhttp.send(); 
                CasovacChat();
            }
    
            function CasovacChat() { 
                 setTimeout("NewHodnotaChat()", 1000);
            }
</script> 

<span id='hframe'><center style="padding-top: 25%; padding-left: 25%;"><img src="./../../images/chat/load.gif" title="načítání" width="85px"/><br><b>Načítání...</b></center></span>


</div>
</div> 
<script>
$(function ()
{
  var $mydiv = $('#chat');
  $mydiv.scrollTop($mydiv.height());
});
</script>
Chamurappi
Profil
Reaguji na Fisaka:
Bohužel tomu tak není..
Nevěřím.

Nerozumím tvému postupu. Dal jsem ti optimální hotové řešení a teď se s tím zase patláš od začátku, opakuješ stejné chyby… to nemá cenu.
Fisak
Profil
Chamurappi:
Ano fungovalo to pokud to bylo v iframu.. Jenže teď jsem předělal ten chat tak aby to nebylo v iframe ale v divech a to už bohužel fungovalo tak že to posunulo dolu celou stránku a ne pouze div.
Chamurappi
Profil
Reaguji na Fisaka:
Takže budeš místo volání scrollBy(0, 100000) nastavovat nějakýElement.scrollTop = 100000 a onscroll nebudeš chytat na window, ale na tom elementu, a nebudou tě zajímat rozměry a stav posuvníku kořenového elementu, ale toho, kterým se roluje. To jsou všechno celkem jednoduché úpravy, ale ty místo toho celou logiku zahodíš a napatláš si přes jQuery jednorázové přenastavení scrollTop při načtení stránky a pak se divíš, že je jednorázové…
Fisak
Profil
Chamurappi:
Dobře takže jestli to dobře chápu tak
<script>
var $mydiv = $('#chat-window');
var automatika = true;
$mydiv.onscroll = function()
{
  automatika = $mydiv.scrollTop + $mydiv.clientHeight == $mydiv.scrollHeight;
}; 
if(automatika) scrollBy(0, 100000);
</script>

takhle je to dobře ?
Chamurappi
Profil
Reaguji na Fisaka:
Ne. Funkce $ nevrací element, ale nějaké jQuery pouzdro kolem pole elementů. Použij document.getElementById, tak, jak už ho používáš jinde.

if(automatika) scrollBy(0, 100000);
Spíš něco.scrollTop = 100000;, kde to něco bude element s posuvníkem.
Fisak
Profil
Chamurappi:
Dělám to podle Vás ale stále mi to nejde :( už nevím v čem dělám chybu..
<script>
var myScrollDiv = document.getElementById('chat-window');
myScrollDiv.scrollTop = 100000;
</script> 



Ba ne funguje to :-) Děkuji moc za rady..

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: