I have this code, to load chat
function getMessages(letter) { var div = $('#messages'); $.get('msg_show.php', function (data) { div.html(data); }); } setInterval(getMessages, 100);
What I have to add, to automatically scroll down #messages
div on page load, and again with every new chat post?
This doesn't work:
function getMessages(letter) { var div = $('#messages'); $.get('msg_show.php', function (data) { div.html(data); $('#messages').scrollTop($('#messages')[0].scrollHeight); }); } setInterval(getMessages, 100);
Set the overflow-x:hidden; and overflow-y:auto; that will automatically hide the horizontal scroll bar and present only vertical scrollbar. Here the scroll div will be vertically scrollable.
scrollTop = 1000; ). The second is setting the link to point to a specific id in the page e.g. Then if in your target page you'll have that ID the page will be scrolled automatically.
The Element. scrollTop property gets or sets the number of pixels that an element's content is scrolled vertically. An element's scrollTop value is a measurement of the distance from the element's top to its topmost visible content.
What does 'scrolling the chat screen' in an internet chat room mean, and is it good or bad netiquette? Looking further down the screen (good netiquette). Scrolling down to follow the conversation as it develops (bad netiquette).
Let's review a few useful concepts about scrolling first:
When should you scroll?
Programmatically that is:
if (firstTime) { container.scrollTop = container.scrollHeight; firstTime = false; } else if (container.scrollTop + container.clientHeight === container.scrollHeight) { container.scrollTop = container.scrollHeight; }
Full chat simulator (with JavaScript):
https://jsfiddle.net/apvtL9xa/
const messages = document.getElementById('messages'); function appendMessage() { const message = document.getElementsByClassName('message')[0]; const newMessage = message.cloneNode(true); messages.appendChild(newMessage); } function getMessages() { // Prior to getting your messages. shouldScroll = messages.scrollTop + messages.clientHeight === messages.scrollHeight; /* * Get your messages, we'll just simulate it by appending a new one syncronously. */ appendMessage(); // After getting your messages. if (!shouldScroll) { scrollToBottom(); } } function scrollToBottom() { messages.scrollTop = messages.scrollHeight; } scrollToBottom(); setInterval(getMessages, 100);
#messages { height: 200px; overflow-y: auto; }
<div id="messages"> <div class="message"> Hello world </div> </div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With