none
2/9のWindowsUpdate適用後、子画面から親画面に値を返せなくなる現象について RRS feed

  • 質問

  • よろしくお願い致します。

    WindowsUpdateで、2/9配布分適用後に画面間の値の受け渡しができなくなる現象が発生しております。

    WindowsUpdateを適用しても、元の動作になるように模索中ですが、何かご助言などありましたら助かります。

    (正常挙動)

    1.親画面からコード検索のための子画面を開く。

    2.子画面でコードを選択する。

    3.親画面の特定の項目に、子画面で選択したコードの日本語名がセットされる。

    (現象)

    「正常挙動」の3で、値が返されなくなってしまいました。

    (内部の動き)

    「正常挙動」の2で、子画面内では選択したコード、および日本語名を保持しています。

    しかしそれをreturnValueで親画面に返した後、親画面では受け取れていません。(undefinedとなる)

    (周辺情報)

    2/9に配布されたWindowsUpdate適用前の状態では意図したとおりの動きをしていましたが、適用後に上記の状態になってしまっています。

    絞り込んでみると「KB3134814」と、「KB3141092」をアンインストールすると解消されました。

    ただ、「KB3134814」はIE11のセキュリティ更新プログラムということもあり、「充てない」ということもできないと思っております。

    2016年2月14日 12:07

すべての返信

  • 具体的にはどういったコードでしょうか?下記、Javascriptだと仮定して答えてみます。

    Windows 8.1の「KB3134814」と、「KB3141092」が当たっている環境のIE11で下記のサイトを試してみました。

    http://www.ne.jp/asahi/hishidama/home/tech/jscript/dialog.html

    モードレス、モーダルともに子画面から親画面に文字列を返すことができました。

    方法によっては、回避できるのではないかと思います。


    2016年2月14日 13:11
  • コメントありがとうございます。

    具体的には以下のような連携になっています。

    (子画面)

    window.returnValue=args;

    this.window.close();

     ⇒

    (親画面)

    returnArray = window.showModalDialog(purl,args,wattr)

    子画面のargsには値が確認できますが、親画面に戻ってきた後のreturnArrayはundefinedになっている状況です。

    子画面の終わり方が、ご教示頂いたサイトと違いますね。

    2016年2月15日 2:06
  • もしかしたら、これでしょうか?
    answers:KB3141092 Hotfix in Tuesday Updates

    Windows 7 にて本来適用されない KB3141092 が入ってしまうことがあるらしく、そうすると同様の現象が出るみたいです。
    2016年2月15日 2:56
  • 確かに、こちらと同じく「KB3141092」を原因として、Dialogからの戻り値が返されなくなる現象のようですね。

    ただ、今回は別ルートで対応案を見つけることができました。

    子画面から「window.returnValue=args;」で戻り値を返していた箇所を「parent.window.returnValue=args;」とすることで、

    戻り値が返ってくるようになりました。

    皆様、貴重なご助言、本当にありがとうございました。

    2016年2月15日 8:14
  • それはお勧めできません。
    親Window の returnValue を他で使わなければ、理屈の上では問題ないはずです。
    しかし、今回のようにアプリケーション外の不具合が絡む場合には、原因が究明しにくい副作用が発生するかも知れません。
    2016年2月15日 8:38