<button>
が紹介されてた.
例としては,
<button type="submit" name="subbutton" value="xxx" >submitボタン</button> <button type="reset">resetぼたん</button> <button type="buton">ただのボタン</button> <button type="button"><img src="***.gif" alt=""> <br>画像ボタン</button>とゆーことで,
<button type="submit" name="move" value="$ud$row_number">$kanji</button>と生成すると, 下のようになります, と.
... <head> 上部省略 ... <script language="javascript"> function LoadEvent() # postback したときのスクロール { <tmpl_var name="window_scrollTo"> // これは HTML::Template で置換される } function getYposition() # 縦位置の取得 { var form = document.forms["form1"]; // form1 という id のフォームにおいて... form.yposition.value = (document.documentElement.scrollTop || document.body.scrollTop); } // browser によって scrollTop (縦位置) のとりかたが異なる </script> </head> <body onload="LoadEvent()"> <!-- postback 時にスクロール --> ... 以下,HTML 本文 ...全体的な方針を書くのを忘れていたけど, JavaScript に現在の縦位置を取得させて, それを Perl な CGI に渡して, postback のときに「どこそこに移動せよ」 指示を
<tmpl_var name="window_scrollTo">
に書く,
というまったくドロくさいやりかた
……
しかし JavaScript が動かない web browser でも問題なく動作するだろう
(そういう場合は自動スクロールしないだけ).
id="form1"
と名づけられたフォームにおいて以下のようにしておく.
<form method="post" id="form1" onSubmit="getYposition();" action="./table.pl"> <input type="hidden" name="yposition"/> ... 以下,form の内容は省略 ...フォーム名は
id
で,
変数名は name
で指定する,
と.
yposition
をあつかい,
my $window_scrollTo = ''; my $yposition = $q->param('yposition'); if (defined $yposition) { $window_scrollTo = "window.scrollTo(0, $yposition);"; } my $tmpl = HTML::Template->new(filename => "$dir/table.tmpl"); $tmpl->param(window_scrollTo => $window_scrollTo); ... 以下は省略 ...
table.tmpl
はさっき説明していた HTML ファイル (HTML::Template なやつ).
これを
postback するときに
<tmpl_var name="window_scrollTo">
を
window.scrollTo(0, POST時に取得された縦位置座標);という JavaScript 関数よびだしに置き換えている.
esj.ne.jp
上での私の CGI プログラムの挙動もあいかわらず不審なまま
(かなりめちゃくちゃ).
いったい何が原因なんだろうねえ
(注: 竹中さん作の参加者受付などなど
多数のプログラムは問題なく動いているので,
ご安心あれ)
……
たぶん web server の CGI 動作設定のわりと単純なミスだと思うんだけど.
CentOS,
わけわからん.