none
IE11(Edgeモード)で入力フォームの値が「戻る」やhistory.backで値が消える事象について RRS feed

  • 質問

  • Windows7のIE11(Edgeモード)でナビゲーションボタンの「進む」「戻る」や
    JavaScriptのhistory.forward、history.backで履歴を移動すると
    1回目の履歴表示では入力した値が復元されますが、
    2回目の履歴表示では入力した値が消滅します。

    この事象はIE11(Edgeモード)の不具合なのでしょうか?

    ※Windows10(Edge)ブラウザも同様の動きをします。
    ※互換モードのIE8までは値は消滅しませんが、IE9以降は値が消滅します。
    ※FireFox, Chrome、Safari、Operaでは値は消滅しません。

    ●例)

    1. 入力フォームA。
     (1) <input type="text" name="a1" value="">のテキストボックスに値を入力。
     (2) <input type="submit" name="send" value="送信">を押して送信し、
       入力フォームBへ遷移する。

    2. 入力フォームB。
     (1) <input type="text" name="a1" value="">のテキストボックスに値を入力。
     (2) <input type="submit" name="send" value="送信">を押して送信し、
       入力フォームCへ遷移する。

    3. 入力フォームC。
     (1) <input type="text" name="a1" value="">のテキストボックスに値を入力。
     (2) <input type="submit" name="send" value="送信">を押して送信し、
       入力フォームAへ遷移する。

    4. 入力フォームA。
     (1) 「戻る」ボタンで入力フォームCに戻る。

    5. 入力フォームC。。。1回目の履歴表示。値は表示される。
     (1) 「戻る」ボタンで入力フォームBに戻る。

    6. 入力フォームB。。。1回目の履歴表示。値は表示される。
     (1) 「戻る」ボタンで入力フォームAに戻る。

    7. 入力フォームA。。。1回目の履歴表示。値は表示される。
     (1) 「進む」ボタンで入力フォームBに進む。

    8. 入力フォームB。。。2回目の履歴表示。値は消滅している。
     (1) 「進む」ボタンで入力フォームCに進む。

    9. 入力フォームC。。。2回目の履歴表示。値は消滅している。


    ●サンプルページはJSPで作成。
    (但し、記載コード内にはJSPステートメントは使用せず。)

    [history_back_test1.jsp]
    < html>
    < head>
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache" />
        <meta http-equiv="Expires" content="0" />
    < /head>
    < body>
        入力フォームA
        <form action="history_back_test2.jsp" method="post">
            <input type="text" id="idval1" name="a1" value="">
            <br>
            <input type="submit" value="次ページ">
        </form>
    < /body>
    < /html>

    [history_back_test2.jsp]
    < html>
    < head>
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache" />
        <meta http-equiv="Expires" content="0" />
    < /head>
    < body>
        入力フォームB
        <form action="history_back_test3.jsp" method="post">
            <input type="text" id="idval1" name="a1" value="">
            <br>
            <input type="submit" value="次ページ">
        </form>
    < /body>
    < /html>

    [history_back_test3.jsp]
    < html>
    < head>
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache" />
        <meta http-equiv="Expires" content="0" />
    < /head>
    < body>
        入力フォームC
        <form action="history_back_test1.jsp" method="post">
            <input type="text" id="idval1" name="a1" value="">
            <br>
            <input type="submit" value="次ページ">
        </form>
    < /body>
    < /html>


    ●ページが表示される際のレスポンスヘッダー。

    キー    値
    応答    HTTP/1.1 200 OK
    Server    Apache-Coyote/1.1
    Content-Type    text/html;charset=Cp943C
    Content-Length    385
    Date    Fri, 28 Oct 2016 08:12:54 GMT

    ※ちなみにinput/type="text"のvalue属性を取り除いて
     動きを確認すると値は消滅しないことも確認しております。
     (参考)http://www.noribase.net/2016081358
     そのため、
      「ブラウザは値を保持しているが、1回目の表示で
       何かしらのフラグが変更されて、2回目以降の表示では
       そのフラグによって復元されない挙動となっている」
      ように見えます。

    ご存知の方でご回答頂けると幸いです。
    どうぞよろしくお願い致します。

    2016年10月31日 0:26

回答


  • StackOverFlowで回避方法の回答がありましたのでここはクローズします。

    StackOverFlowの検索キーワード:

    The value of input (text / hidden) empty in IE 11 (Edge), “back” or history.back () for second time

    • 回答としてマーク powtok 2017年1月5日 6:17
    2017年1月5日 6:16