チャットを作っています。
メッセージを表示する部分をスクロールで常に一番下を表示させたいのです。
表示件数が少ない時は以下の状態で問題無いのですが、表示件数が増えてくるとスクロールが途中で止まってしまいます。
//JS
function dojQueryAjax() {
$.ajax({
type: "GET",
url: "page_ajax.php",
cache: false,
success: function (data) {
$('#ajaxreload').html(data);
},
error: function () {
alert("通信エラー");
}
});
}
window.addEventListener('load', function () {
setTimeout(dojQueryAjax, 0);
setInterval(dojQueryAjax, 5000);
$('.message_cont').delay(100).animate({
scrollTop: $(document).height()
},100);
});
//HTML
<div id="ajaxreload" class="message_cont">
<!-- ここからpage_ajax.php -->
<div class="ajaxReturn">
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
<p>hoge</p>
</div>
<!-- ここまでpage_ajax.php -->
</div>
//CSS
.message_cont {
max-height: 400px;
overflow-y: scroll;
}
こういった場合は、どうすればいいでしょう?
ご教示いただけないでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんばんは
確認できる環境がないので、ご質問文をざっとながめただけですが・・・
2ヶ所ほど問題があるように思われます。
一つ目は、documentの最下部までスクロールするような記述はありますが、チャットの内容が増加した場合には、CSSで .message_cont の高さを制限している関係で、したの方の書き込みは表示されない状態になっているように思えます。
.message_cont の要素もスクロールさせる必要があるのではないでしょうか。
二つ目は(上記にも関連しますが)、新しい書き込みが下に追加されるものと仮定するなら、.message_contをスクロールする記述を内容を書替える毎に行うようにしておく必要があるということになります。
具体的には、ajaxの更新処理の一環として記述しておく必要がありそうです。
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
要素内を常に一番下を表示させたい
-
jqueryを使って非同期通信で10...
-
JavascriptからPHPへのAjax通信...
-
同一ページ移動時ハンバーガー...
-
Googleマップに複数のピンを立...
-
変数の内容を別functionに渡したい
-
【再質問】計算(入数*単価)...
-
Selenium4でボタンをクリックで...
-
パソコンで動くjavascriptがス...
-
階層別の組織図の自動作成について
-
jQueryのblockUIをformのボタン...
-
jQueryでloadした部分に.jsが効...
-
jquery.csv2table.jsに検索窓
-
jQueryを使いformでsubmitした...
-
<input>のvalue値をプルダウン...
-
Selenium Basicの件
-
インラインフレームを自動更新...
-
XHTMLで外部JSファイルを読み込...
-
jQuery toggle() 戻るで開いた...
-
jQueryで追加した要素がマウス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルでのonreadystatechang...
-
要素内を常に一番下を表示させたい
-
jqueryでリンクを無効にしたあ...
-
jqueryのgetでJSPを呼び出したい
-
外部ファイルload処理完了して...
-
JQueryでAjax通信をキャンセル...
-
ある条件の画像のみ表示を切り...
-
Jquery で on/offボタンの実装...
-
AJAXでのリロードに関して
-
jqueryを使って非同期通信で10...
-
コールバック中の変数操作
-
Selenium4でボタンをクリックで...
-
Javascriptを使ってQRコード読...
-
JavascriptからPHPへのAjax通信...
-
IndexedDB を使ってファイルア...
-
同一ページ移動時ハンバーガー...
-
JavaScriptでtabindexの変更っ...
-
jQueryを使いformでsubmitした...
-
SQLのmaxで求めた値を変数に代...
-
カンマ区切りのデータを配列に...
おすすめ情報
fujillin様
ありがとうございました。
>.message_cont の要素もスクロールさせる必要がある
これはスクロール指定してあります。
ごめんなさい。二つ目はよく理解できません。とりあえず参考にさせていただきます。