- - PR -
【ASP.NET】【JavaScript】定時間毎にWebページを自動リフレッシュ & 現在のスクロール位置を保持
1
投票結果総投票数:17 | |||
---|---|---|---|
Windows | 1票 | 5.88% | |
ASP.NET | 7票 | 41.18% | |
JavaScript | 9票 | 52.94% | |
|
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-08-21 19:26
初めて投稿させて頂きますfine_courtと申します。
当方の環境は以下の通りです。 OS :Windows XP ブラウザ:IE6 開発環境:Microsoft ASP.NET (C#) 現在、JavaScriptを用いて、 「一定時間毎にWebページを自動リフレッシュさせて かつ 現在見ているスクロール位置を保持する。」 ということを実現したいのです。 試行錯誤した結果、下記のコードで実現できました。 (そのままコピーして頂いて動作すると思います。自動リフレッシュ感覚は5秒としています) しかしながら、 window.nameに現在見ているページのスクロール位置(x,y)を持たせる、という方法で実現させていますが、 とある事情でwindow.nameは使えなくなりました。 そこで、現在のスクロール位置(x,y)をwindow.name以外に持たせる必要があります。 例えば、 <INPUT id="PositionHold" name="PositionHold"> という入力ボックスをWebページに持たせます。(場合によっては この入力ボックスをHidden属性にします) 次に、 window.self.PositionHold.Value = (x,y); そこに現在のスクロール位置を持たせるという方法も考えましたが、JavaScriptのエラーが出てしまいます。 window.nameに現在のスクロール位置を持たせるという方法を使用せずに、 「一定時間毎にWebページを自動リフレッシュさせて かつ 現在見ているスクロール位置を保持する。」 という機能を実現したいのですが、みなさんのお知恵をお借りできないでしょうか? よろしくお願いします。 <HTML> <HEAD> <title>JavaScrit テスト</title> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <SCRIPT language="javascript"> function ReLoad() { // 現在の表示スクロール位置を取得 var xOffset = window.document.body.scrollLeft; var yOffset = window.document.body.scrollTop; // 現在の表示スクロール位置を代入 window.name = xOffset + "," + yOffset; //window.self.document.PositionHold.Value = xOffset + "," + yOffset; // リロード window.location.reload(true); } function Scroll() { // 表示位置(x, y)を取得 var coordinates = window.name.split(","); var x = coordinates[0]; var y = coordinates[1]; // 表示スクロール位置座標を削除 window.name = ""; // 表示していた位置までスクロール window.scrollTo(x, y); } function ShowInformationOnStatusBar() { var today; var yy, mm, dd, h, m, s; var clock; today = new Date(); yy= today.getYear(); mm= today.getMonth() + 1; dd= today.getDate(); h = today.getHours(); m = today.getMinutes(); s = today.getSeconds(); if (h < 10) { h = "0" + h; } if (m < 10) { m = "0" + m; } if (s < 10) { s = "0" + s; } clock = "更新時刻 : " + yy + "/" + mm + "/" + dd + " " + h + ":" + m + ":" + s; window.status = clock; } if (window.name != "") { // IE の ステータスバーに情報を表示 ShowInformationOnStatusBar(); // スクロール関数を呼ぶ onload = Scroll; // 自動更新用タイマを設定 window.setTimeout("ReLoad();", 5000); } else { // 起動時の処理 window.name = "0,0"; // 自動更新用タイマを設定 window.setTimeout("ReLoad();", 100); } </SCRIPT> </HEAD> <body> <INPUT id="PositionHold" name="PositionHold"><BR> ・1<BR>・2<BR>・3<BR>・4<BR>・5<BR>・6<BR>・7<BR>・8<BR>・9<BR>・10<BR> ・11<BR>・12<BR>・13<BR>・14<BR>・15<BR>・16<BR>・17<BR>・18<BR>・19<BR>・20<BR> ・21<BR>・22<BR>・23<BR>・24<BR>・25<BR>・26<BR>・27<BR>・28<BR>・29<BR>・30<BR> ・31<BR>・32<BR>・33<BR>・34<BR>・35<BR>・36<BR>・37<BR>・38<BR>・39<BR>・40<BR> ・41<BR>・42<BR>・43<BR>・44<BR>・45<BR>・46<BR>・47<BR>・48<BR>・49<BR>・50<BR> </body> </HTML> |
|
投稿日時: 2006-08-21 20:59
window.nameの代わりに、location.hashに変更しても動作しましたよ。
いかがでしょうか?。 |
1