- 締切済み
PHP画面遷移でスクロール位置を保持する
いつもお世話になっております。 現在、PHP+MySQLでWebアンケートを制作中です。 画面遷移で、アンカーではなくスクロール位置を保持し、 正確に前ページのsubmitボタンを押した時点での表示状態に 戻したいです。 <詳細> q.phpはアンケートフォームです。 send.phpはエラーチェックとDB登録のモジュールです。 comp.phpは(正常に)完了したことを知らせるメッセージページです。 q.phpは、設問数が多いため、アンケートの途中途中に「保存ボタン」を用意しています。 どのタイミングで、どの保存ボタンを押すかは、 途中まで回答していたり、所々回答していたり、全く回答していなかったりと、 いろんなパターンがあると思います。 保存ボタンを押すと、send.phpに移動します。 そこでは、未回答やおかしな点がないかチェックしながら、 その都度、その時点での回答内容がDBに保存されます。 問題(未回答やエラーが)なければ、 comp.phpに移動し、終了のメッセージを表示しますが、 問題がある場合は、q.phpに戻り、問題のある箇所を赤でハイライト等で表示し直します。 このときに、最初にq.phpのsubmitを押した時点と同じ表示状態に戻したいのです。 q.phpにある複数のsubmit(class名、action先はすべて同じ)ボタンを押したときの スクロール情報を変数に格納し、移動先のsend.phpで保持し、(問題あり時に)q.phpに その値を返し、表示位置を同じにするという仕組みを知りたいです。 本番まで日数がないため、最も簡単に実装できる方法をご教授下さい。 なお、ttp://xirasaya.com/?m=detail&hid=175 を読みましたが、 html(PHP?)ソースコードへの実装方法、 javascriptとphpのデータの受け渡し方法等が 不明で実現できませんでした。 また、アンケートを実施(回答)する対象者のブラウザは、ほとんどが、IE6かIE7です。
- みんなの回答 (4)
- 専門家の回答
お礼
回答ありがとうございます。 試してみましたが、動きませんでした。 昨日からWebサイトの情報を見尽くしましたが(たぶん)、この挙動実現するための情報(javascript)は、該当部分のソースコードは載っていましたが、肝心の要の諸設定情報まではありませんでした。 ですので、自分で試行錯誤しながら「補足」のとこまでたどりつきました。
補足
現在、jqueryを導入し各ファイル間で値の受け渡しまで成功しています。 (q.phpでscrollTop取得し、input hiddenでsend.phpにPOST送信。 input hiddenでは、POST受信したy座標値をSESSIONへ保存。 アンケートの回答内容にエラーがあれば、q.phpに戻り、SESSIONにある y座標の値で・・・・・・・onloadするだけのはずが) onloadだけができません(動きません) 試しにphpのprintでSESSIONの値を書かせると、 きちんとsubmitボタンを押した時点のy座標が表示される。 該当するjavascriptはbody内に <?php if(isset($_SESSION['scrollY'])){ print $_SESSION['scrollY'];?> <script type="text/javascript"> document.onload = function(){ document.body.scrollTop = "<?php echo $scrollY; ?>"; } </script> <?php } ?> として記入。 ご指摘をお願いします。