none
KB3008923を適用したIE11で、window.showModalDialogで開いたダイアログ内で window.showModalDialogを実行すると戻り値がundefinedになる RRS feed

  • 質問

  • 的場と申します。

    表題の問題について、解決策をご教授ください。

    以下、テストコードです。

    2014/12のWindows Updateに含まれるKB3008923を適用した状態では

    Openボタンを2回押して、Closeボタンを押すとundefinedと表示され、正しくありません。

    KB3008923を適用していない状態では1と正しく表示されます。

    (test.htm)

    <!DOCTYPE html>
    <html>
     <head>
      <script>
       function openDialog() {
        var returnValue = window.showModalDialog("test.htm");
        alert(returnValue);
       }
       
       function closeDialog() {
        window.returnValue = 1;
        window.close();
       }
      </script>
     </head>
     <body>
      <button onclick="openDialog();">Open</button>
      <button onclick="closeDialog();">Close</button>
     </body>
    </html>


    2014年12月10日 9:07

回答

  • USのフォーラムを見てみると、同じ報告をされている方が居ますね(向こうはdialogArgumentsですが、タイミングと現象から根っこ的にはおそらく同じもしくは深い関連があると思えます)。

    そのスレッドの返信を見る限り、MS側も認識して調査に取り掛かっているようです。

    HELP! KB3008923 breaks window.dialogArguments in secondary windows!

    #応急処置的な対応が何かできないか考えてみたのですが、あまり良い案は思い浮かばず……。
    #どうしても早急に……というのであれば、cookiesやlocalStroageを経由して値を受け渡しする手もあるかもしれません(未検証)

    ## 念のため、向こうのフォーラムに「returnValueも壊れてる」旨とこのスレッドのリンクを投下しておきました。


    きよくらならみ



    • 編集済み Kiyokura 2014年12月11日 4:51
    • 回答としてマーク Yosuke Matoba 2014年12月11日 6:42
    2014年12月11日 4:40

すべての返信

  • 直接の回答ではなくてすみません。

    ただでさえ問題が多い showModalDialog の使用はこの際諦めて、別の手段を取る(jQuery UI の dialog とか、ASP.NET なら Ajax Control Toolkit の ModalPopup に替えるなど)というアプローチを取る余地はないのでしょうか?

    そちらの方ならもっと回答がつきやすいのではないかと思まれますので。

    2014年12月11日 1:14
  • USのフォーラムを見てみると、同じ報告をされている方が居ますね(向こうはdialogArgumentsですが、タイミングと現象から根っこ的にはおそらく同じもしくは深い関連があると思えます)。

    そのスレッドの返信を見る限り、MS側も認識して調査に取り掛かっているようです。

    HELP! KB3008923 breaks window.dialogArguments in secondary windows!

    #応急処置的な対応が何かできないか考えてみたのですが、あまり良い案は思い浮かばず……。
    #どうしても早急に……というのであれば、cookiesやlocalStroageを経由して値を受け渡しする手もあるかもしれません(未検証)

    ## 念のため、向こうのフォーラムに「returnValueも壊れてる」旨とこのスレッドのリンクを投下しておきました。


    きよくらならみ



    • 編集済み Kiyokura 2014年12月11日 4:51
    • 回答としてマーク Yosuke Matoba 2014年12月11日 6:42
    2014年12月11日 4:40
  • SurferOnWww様、Kiyokura様

    返信ありがとうございます。

    showModalDialog を使わないのが一番だとは認識しているのですが、

    使わない形に変えるとなると大幅な変更が生じてしまうので、すぐには難しい状況です。

    USのフォーラムはこちらも今朝発見しました。状況を追ってみようと思っています。

    localStorageは可能性がありそうなので検討してみます。ありがとうございます。


    2014年12月11日 4:50
  • きよくらならみ 様

    sessionStorageを使ってテストしてみましたが、dialogArgumentsとreturnValueをsessionStorageに入れてやりとりすることで応急処置ができました。モーダルダイアログしかないので同一セッションから同時アクセスもなく、ひとまずこれでしのげそうです。

    ありがとうございました。

    2014年12月11日 6:41
  • showModalDialog の問題についての状況をトラックしたいのであれば、有償サポートでサービス リクエストを出しておくと良いでょう。原因が製品の不具合であれば (たぶんこの件は不具合 = バグですね) サポート料金は請求されないはずです。


    hebikuzure

    2014年12月11日 6:53
    モデレータ
  • https://support.microsoft.com/kb/3008923の Known issues にこの問題が掲載されたので、リクエストは出さずにそこをチェックするようにしようと思っています。ありがとうございます。

    2014年12月11日 23:49
  • 問題を解決するパッチがMSから出たようなので記しておきます。

    http://support.microsoft.com/kb/3025390

    2014年12月18日 4:27