Ik ben bezig een chat in vanilla JS en Ajax te maken. Het leeuwendeel van de chat werkt prima alleen is er een probleem wbt omhoog scrollen in de chat. Het is simpelweg onmogelijk om omhoog te scrollen. Dit komt omdat ik bij elke AJAX update de scrollDown() functie aanroep. Nu wil ik ervoor zorgen dat als je naarboven aan het scrollen bent of als de scrollbalk niet helemaal naar beneden is je dan niet telkens weer naar beneden scroll.
Ik heb al veel Gegoogled maar een goed antwoord kon ik niet vinden of het waren jQuery code examples. Ik heb ook al het enige geprobeerd met div.scrollHeight, div.scrollTop maar tevergeefs.
Hier is mijn code:
<script type="text/javascript">
getBerichten();
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
}
}
function doWork(id, user_id) {
nieuwbericht = getHTTPObject();
if (nieuwbericht != null) {
if( document.getElementById('bericht').value != "")
{
nieuwbericht.open("GET", "ajaxberichten.php?id=" + id + "&user_id=" + user_id + "&bericht="
+ document.getElementById('bericht').value, true);
nieuwbericht.send(null);
document.getElementById("bericht").value = "";
}
}
}
function setOutput()
{
if(httpObject.readyState == 4){
document.getElementById('berichten').innerHTML = httpObject.responseText;
aantalkeer = aantalkeer + 1;
bericht = document.getElementById('chatbox');
scrollDown();
setInterval(getBerichten(),1000);
}
}
function getBerichten()
{
httpObject = getHTTPObject();
if (httpObject != null)
{
httpObject.open("GET", "ajaxgetberichten.php?id=<?php echo $_GET['id'] ?>", true);
httpObject.send(null);
httpObject.onreadystatechange = setOutput;
}
}
function scrollDown()
{
var objDiv = document.getElementById("chatbox");
objDiv.scrollTop = objDiv.scrollHeight;
}
</script>
<div class="postbox">
<div class="post">
<div class="chatbox" id="chatbox">
<div id="berichten"></div>
</div>
<form method="post" action="">
<textarea name="bericht" id="bericht"rows="20" cols="85"> </textarea>
<input name="verstuur" type="button" onclick="doWork(<?php echo $_GET["id"] ?>, <?php echo $user_id ?>);" value="Verstuur"/>
</form>
</div>
</div>
Alvast bedankt!