Я разрабатываю чат с кометкой, и мне бы хотелось, чтобы Slimscroll прокручивался вниз только при обновлении div, потому что мой скрипт чата обновляет div, добавляя новые сообщения в div. До сих пор я мог прокручивать Slimscroll каждые 2 секунды.Slimscroll прокрутка вниз только при обновлении div
ПРОБЛЕМА Но проблема в том, что она прокручивается вниз, изменилось ли ДИВ или нет, и из-за того, что пользователь не может прокручивать вверх. Как это прокрутить вниз, только когда div с id messages_content
изменился или увеличил свой размер?
Это мой slimscroll код
$(".slimscroll").slimscroll({
height: "300px",
color : "#0073b7",
alwaysVisible: true,
size: "10px",
start: 'bottom',
railVisible: true,
railColor: '#0073b7',
railBorderRadius: 0
}).css("width", "100%");
// update content every second
setInterval(function(){
// update slimscroll every time content changes
var en_bas = $('.slimscroll').slimscroll({ scrollBy: '400px' });
}, 2000);
И это мой Comet код, который использует prototypejs для извлечения информации из базы данных.
<script type="text/javascript">
var Comet = Class.create();
Comet.prototype = {
timestamp: 0,
url: './messages_private_travail.php?id_du_membre_envoye=<?php echo $id_ojm_peoples; ?>&id_de_l_autre_originale=<?php echo $id_de_l_autre_originale; ?>&id_message=<?php echo addslashes(@$_GET['id_message']); ?>&chat_between=<?php $chat_between = hash('sha512',"Chat Between $id_ojm_peoples AND $id_de_l_autre_originale"); echo $chat_between; ?>',
noerror: true,
initialize: function() { },
connect: function()
{
this.ajax = new Ajax.Request(this.url, {
method: 'get',
parameters: { 'timestamp' : this.timestamp },
onSuccess: function(transport) {
// handle the server response
var response = transport.responseText.evalJSON();
this.comet.timestamp = response['timestamp'];
this.comet.handleResponse(response);
this.comet.noerror = true;
},
onComplete: function(transport) {
// send a new ajax request when this request is finished
if (!this.comet.noerror)
// if a connection problem occurs, try to reconnect each 5 seconds
setTimeout(function(){ comet.connect() }, 5000);
else
this.comet.connect();
this.comet.noerror = false;
}
});
this.ajax.comet = this;
},
disconnect: function()
{
},
handleResponse: function(response)
{
//$('messages_content').innerHTML += '<div>' + response['msg'] + '</div>';
$('messages_content').innerHTML += ' ' + response['msg'] + ' ';
//On appel la fonction qui permet de jouer le son
jouer_son('soundmanager2/audio/beep.mp3');
//On applique la fonction qui montre que le message a ete lu par le membre
mettreajour('nombre_nouveaux_messages', 'messages_lire_marquer_comme_lu.php?id_du_membre_envoye=<?php echo $id_ojm_peoples; ?>&id_de_l_autre_originale=<?php echo $id_de_l_autre_originale; ?>&id_message=<?php echo addslashes(@$_GET['id_message']); ?>&chat_between=<?php $chat_between = hash('sha512',"Chat Between $id_ojm_peoples AND $id_de_l_autre_originale"); echo $chat_between; ?>', '&id_ojm_peoples=<?php echo $id_ojm_peoples; ?>');
},
doRequest: function(request)
{
new Ajax.Request(this.url, {
method: 'get',
parameters: { 'msg' : request, evalScripts: true }
});
}
}
var comet = new Comet();
comet.connect();
</script>
Я обновил свой пост для лучшего понимания. Я скопировал этот код, который вы только что дали, и поместил его под '$ ('messages_content'). InnerHTML + = '' + response ['msg'] + ''; 'но это не сработало. Пожалуйста, можете ли вы подробнее остановиться? –
@ManOfGod Сначала мне может понадобиться небольшое разъяснение. В вашем коде вы используете: '$ ('messages_content'). InnerHTML + = '' + response ['msg'] + '';' Но это не должно быть допустимым селектором jQuery (если тег не равен _ _). Если вы не используете: '$ ('# messages_content'). Append ('' + response ['msg'] + ''); вместо этого? –
Mwr247
@ManOfGod Я понял после своего предыдущего комментария, что вы используете prototypejs для своих селекторов вместо jQuery (на ваш вопрос был jQuery в тегах, поэтому я ответил на основании этого). Я обновил код в своем ответе выше, и теперь он должен быть совместим с вашим. – Mwr247