概要
RailsのActionCableとjQueryでLINEのようなリアルタイムチャットアプリを作っています。チャットを送信した際は、自分の画面ではスクロールしてくれるのですが、チャットを受信した際に自動でスクロールするようにしたいのですが上手くいきません。
コード
JavaScript
1import consumer from "./consumer" 2 3$(function() { 4 const chatChannel = consumer.subscriptions.create({ channel: 'RoomChannel', room: 'room_channel' }, { 5 connected() { 6 console.log("hello") 7 // Called when the subscription is ready for use on the server 8 }, 9 10 disconnected() { 11 // Called when the subscription has been terminated by the server 12 }, 13 14 received: function(data) { 15 console.log(data) 16 return $('#messages').append(data['message']); 17 }, 18 19 speak: function(message, room_id) { 20 // スクロールの処理 21 $(messages).animate({scrollTop: $(messages)[0].scrollHeight}) 22 23 return this.perform('speak', { 24 message: message, 25 room_id: room_id 26 }); 27 } 28 }); 29 30 31 $(document).on('keypress', '[data-behavior~=room_speaker]', function(event) { 32 if (event.keyCode === 13) { 33 chatChannel.speak(event.target.value, $("#room_id").val()); 34 event.target.value = ''; 35 return event.preventDefault(); 36 } 37 }); 38});
あなたの回答
tips
プレビュー