入力フォームでのエラー時に戻るボタンを押すと、入力内容がクリアされてしまう原因と回避策

このQ&Aのポイント
  • 入力フォームでのエラー時に戻るボタンを押すと、入力した内容がクリアされてしまう現象が発生しています。特にWindowsXPとIE6の環境では問題が顕著です。この現象はIEの設定によるものであり、回避する方法が限られています。
  • 現時点では、JavaScriptのhistory.back()を使用する場合には、入力内容がクリアされてしまうという制約があります。回避策としては、JavaScriptを使用せずに値の受け渡し処理を行う方法が有効です。
  • 具体的な回避策としては、フォームの入力値をセッションストレージやクッキーに保存し、戻るボタンを押した際にそれらから値を復元するという方法があります。ただし、この方法にはセキュリティ上のリスクがあるため、適切な対策が必要です。
回答を見る
  • ベストアンサー

history.back() について

ある入力フォームを作成しています。 入力エラーがあった場合、エラーメッセージを表示するとともに、 history.back() を使用した「戻る」ボタンを表示させます。 この戻るボタンを押して入力フォーム画面へ戻った場合、 入力した内容がフォームに残っているはずなのですが、 WindodwsXP、IE6 の環境では、クリアされてしまうことがわかりました。 これはIEの設定によって回避できるのでしょうか? もし、回避できないとしたら、history.back() に替わるJavaScriptって あるのでしょうか?値をクリアしないで前のページに戻るには、 やはりJavaScriptにたよらず、値の受け渡し処理をやって あげないとダメでしょうか? ご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 キャッシュの状態によってクリアされる場合とされない場合があり、 history.back() を使用するとフォームの内容を保証できなくなります。  なので、フォームの内容を確実に表示させたいのであれば、やっぱ値の受け渡し処理は必要ではないかと思います。

asakura
質問者

お礼

ありがとうございます。 やっぱり手抜きはダメですね(^^;)

関連するQ&A

  • history.backについて

    お世話になります。 ASP.net(VB.net)、IE6で作成しています。 フォームに「戻る」ボタンを設定して、 クリックすると1画面前に戻るという処理をしたいのですが、うまくいきません。 記述方法としては 1.HTMLに直接書き込む <asp:Button id="btnPre" style="Z-INDEX: 103; LEFT: 416px; POSITION: absolute; TOP: 320px" runat="server"Height="40px" Width="106px" Text="戻る" onClick="history.back()"> </asp:Button> 2.jsファイルを呼び出す ※aspx側 Me.btnPre.Attributes("onClick") = "pageBack()" ※jsファイル側 function pageBack(){ history.back(); } 3.クリックイベントでJavaScriptを埋め込む Private Sub btnPre_Click -以下略- Dim wkScript As String wkScript = wkScript & "<SCRIPTlanguage=""JavaScript"">" & vbCrLf wkScript = wkScript & " history.back();" & vbCrLf wkScript = wkScript & "</SCRIPT>" & vbCrLf RegisterStartupScript("Jscript", wkScript) End Sub のいずれかで考えているのですが、 1の場合 'history' は 'ASP.MainMenu_aspx' のメンバではありません。 (画面名は「MainMenu_aspx」です) 2と3の場合は、前の画面を読み込みにいくのですが、(タスクバーで確認) 表示は「MainMenu_aspx」のままです。 記述の方法がおかしいのか、もしくは同じ現象が起こって回避方法をご存知の方、いらっしゃいましたら、 教えてください。 お願いします。

  • history.backで戻ったときのjs処理

    はじめまして、javascript初心者です。 仕事でwebサイトを作っておりますが、わからないことがあり質問させていただきました。 history.backで前のページに戻ったときにアニメーションを実行させない方法はございますでしょうか。 トップページに外部から訪れた場合のみ、アニメーションを実行させています。 判別はreferrerを使用し、自ドメインを含んでいなかったら実行というような処理をしています。 トップページにはお問い合わせフォームがあり、お問い合わせフォーム→確認画面→戻るを押下した際にアニメーションが実行され、ページのトップへ戻ってしまいます。 「戻る」ボタンには「onClick="history.back()"」を使用しています。 aタグのリンクで処理をすればアニメーションは実行されないのですが、フォームの入力内容がリセットされてしまいます。 入力内容を維持したまま、アニメーションを実行させない方法はございますでしょうか。 ご教示いただけますようお願い申し上げます。

  • [戻る]のヒストリについて

     ヒストリについて、過去の質問を見るのですがいまいちわからなくって質問させて頂ます。             フォーム入力 → フォーム確認画面 -------------------------------------------------  フォーム入力内容が消えてない ← [戻る]をクリック      有効期限切れじゃない こんなことやりたいのですが、どうすればいいんでしょうか? <A HREF="#" onClick="history.back(); return false;">[戻る]</A> っと過去の質問に書いてあったのですが、これって、期限切れなしで、フォーム入力の内容も、絶対そのままの状態で戻るのでしょうか? そして、このhtmlタグだけで、javaScriptなしで良いのでしょうか? javaScript全くわかりませんので、できればスクリプト記載して教えていただけるとありがたいです。

  • history.back スクリプトオフのブラウザで表示させない方法ありますか?

    history.back=戻る 機能を使いたいのですが、JavaScriptをオフにしているブラウザでは、表示されないようにするにはどのような「方法」「スクリプト」を使えばいいのでしょうか? ボタンを表示させるブラウザを振り分けるスクリプトで オフの場合とオンの場合で読み込む外部スクリプトを振り分ければよいのか?と漠然と考えているのですが 記述方法が分かりません。。。 <input type="button" value=" 戻る " onClick="history.back()"> 以外で戻るスクリプトがあれば教えてください。 ◎動作させたい環境:  NN 4.7*~7.1  IE 4.01~6.0

  • メール送信フォームとhistory.back()

    現在PHPでメール送信フォームを作っています。画面表示としては、 入力画面→確認画面→送信という流れなのですが、確認画面で「戻る」ボタンを設置して入力画面に戻れるようにしたいと思っています。 そこで、入力画面を当初はhtmlとし、確認画面にhistory.back()を設置してうまく入力値が入っている状態になっていたのですが、入力画面をphpファイルにしたとたんhistory,back()すると空っぽの入力画面が表示されてしまうようになりました。 確認画面で「戻る」ボタンを設置し、入力画面に戻るにはどうすればいいでしょうか?

    • ベストアンサー
    • PHP
  • history.backについて

    IE4.0と、5.0以降のバージョンで、history.backの動きが異なる場合があるように思えるのですが、心当たりの方がいらっしゃいましたら教えてください。

  • history.back()-ページ内リンク除外

    JavaScript初心者です。 今回いろいろなページからアクセスされるページにhistory.back()を利用して、戻るボタンを配置したいと思っています。 <a href="javascript:history.back();">では、そのページ内でページ内リンクを使用してしまうと、前のページには当たり前ですが戻れないです。 ページ内リンクを押した場合を除きたい場合どのように記述すればいいのか分からず途方にくれています。大変恐縮ですがご教示頂ければ幸いです。 宜しくお願い致します。

  • history.backについて2

    先ほどの質問が言葉足らずでした・・・。 補足です。 画面にチェックボックスとテキストボックスがあった場合、チェックボックスとテキストボックスに情報を入力して、次のページに進みます。 そして、次のページから[戻る]ボタンで戻った場合、IE4.0やNNではどちらも情報がクリアされて未入力の状態になるのですが、IE5.0以降ではテキストボックスのみがクリアされて、チェックボックスの情報は残ってしまうという現象があります。 これはIEのせいなのかどうか、判断したい所なのですが・・・。

  • OBJECTタグによるhistory.back非動作現象

    現在JSPベースのWebアプリ開発を進めております。 その中でOBJECTタグを用いてFLASHアプリを配置しているのですが、同ページ内にてOnclickイベントにてJavascriptのhistory.backを実行するボタンを配置しており、なぜかまったく動作しません。 <OBJECT CLASSID="****"> <PARAM *****> <PARAM *****> <EMBED SRC="****"> </OBJECT> <INPUT TYPE="BUTTON" ONCLICK="history.back()"> という感じです。 (かなり簡素化して記載しております) この場合にOBJECTタグをコメントアウトすると正常にhistory.backするため、なんらかOBJECTタグとhistroyとのよろしくない関連があるのかと、色々と調査をしておりますがなかなか情報が得られません。 完全に静的なHTMLではこのような現象は発生した経験は無いので、JSPとの兼ね合いも視野に入れて調べているのですが・・・ 何か情報をお持ちの方、いらっしゃいませんでしょうか? ちなみに、alert()などは正常に動作します。 ONCLICK="alert('hoge1');history.back();alert('hoge2')">とした場合は、 hoge1,hoge2共に動作し、history.backのみ何も反応がありません。 なお、history.lengthには整数値が入ってきておりますので、historyそのものは生きていると思われますし、またalert(history.back) とした場合には、function Back(){ [Native Code]}と表示されるため、Functionそのものはきちんと実行されているものと思います。 何か原因となるような情報や、解決策、回避策がお分かりの方教えて頂ければと思います。 動作環境:IE6SP2 ちなみにFirefox1.5で同ページの動作を確認すると、恐らくOBJECTタグを無視するだろう事から、正常にhistory.backが動作します。 どなたか同じような経験をされた方、いらっしゃいますでしょうか。

  • JavaScriptのhistory.back(戻る)の命令が実行しません.

    教えて頂きたいことがあります. JavaScriptのhistory.back(戻る)を下記の通り記述しました. <A href="Javascript:void(0)" onClick="history.back()" target="_self"> <IMG src="画像ファイル.gif" width="100" height="50" border="0" alt="戻る"></A><BR> 以前から使用している方法で,IE5までは間違い無く 動作していたのですが,PCの環境XPでIE6を使用した所,動作がしなくなってしまいました. 何か問題があるのでしょうか?アドバイスを頂けましたら幸いです.よろしくお願いいたします.

専門家に質問してみよう