質問: [チャット使用時にスクロールバーのデフォルトの位置を下にしたい。] PerlによるCGIでチャットを作成しております。 アプリケーションのチャットの場合はレスをすると前の発言の下の行に加えられる 場合が多いです。 しかし、多くのCGIチャットではその逆でレスは直前の発言の上の行に追加 され,より過去の発言をみるためには下方向にスクロールさせます。 私の自作チャットではスクロールバーを最下端に設定したいのですが方法がわからないので教えてください。 本心としてはHTMLのみ(JavaScriptなし)にしたかったのですが調べたところ スクロールバーの色の設定などにJavaScriptを使っている場合が多かったので JavaScriptならできるかと思い質問いたしました。 質問やご回答お願いいたします。 [実行環境] WindowsXP+ActivePerlv5.80+Apache1.3.28+IE6.0 [自分の知識] JavaScript :なし Perl:入門書読んでいる最中。簡単な掲示板程度なら作成可能 HTML:リファレンスを見ながら使う程度 その他Webプログラム知識:入門書レベルのJavaApplet
回答: 横から失礼しますが... JavaScriptでページを開いた直後の表示位置をスクロールさせることで制御するのであれば、出力部のタグを などのようにしてみてはいかがでしょうか。 window.scrollTo(x,y)は、JavaScriptのメソッドで、座標x,yの位置にスクロールさせる動作を行います。 これをonLoad=""というイベントハンドラで、ページロード終了後に自動的に実行させるようにしていますので、ページがロードされるとページ上部から10000ピクセルの位置に自動でスクロールしてくれるはずです。 スクロール位置については、少々過剰気味に、いいかげんに決めて書いてあります。 実際にスクロールされるのは、スクロールバーが出ている範囲内に収められるので、内容を無視して10000ピクセルの位置に移動してしまうということはなく、実質的にページ下端にスクロールされると思います。 アンカーを利用しての位置に飛ばすのであれば、出力部のHTMLのbodyタグを としても良いかと思います。 この場合は、ページロードの終了時にendというフラグに自動的に移動する動作になるはずです。 ただ、先の方も指摘されていますが、あまり良い処理に思えないのが正直な感想です。 この場合、チャットの表示部が再読込みされる度にページ下端に遷移する可能性がある訳ですよね。 30秒ごとにリロードされるとなると、表示されるログの件数によってはそこにあるログをすべて読み終えるより前に、リロードがかかってページ下端に移動してしまい、最新の発言を読むのにも苦労する可能性がある気がするのですが... 素人考えでしょうか? 失礼しました。