0

グリッドからアイテムを検索するポップアップウィンドウがあります。行が直接選択されると、親ページに値を返します。しかし、ボタンをクリックしてグリッドを検索して行を選択すると、ポップアップから正しい値が返されますが、親ページは未定義のオブジェクトを受け取ります。親ページはどのようにして正しい値を受け取ることができますか?

4

1 に答える 1

0

OPは質問のコメントでこれについて言及しましたが、明確にするために、この回答はユーザーConnorsFanによるこの回答のコピーです。回答が更新された場合、そこに更新が表示される可能性があります。


私のページで showModalDialog を使用し続けるために、バグに対する独自の回避策を考え出す必要がありました。だから、ここにある...

Google Chrome では、ポストバックの後、showModalDialog は常に undefined を返します。ただし、モーダル ダイアログの window.opener プロパティは、ポストバック後でも呼び出し元ウィンドウを指します。そこで、ダイアログの結果をその呼び出し元ウィンドウの returnValue プロパティに入れることを考えました。そして、それは機能します。

呼び出し元ウィンドウで:

var prevReturnValue = window.returnValue; // Save the current returnValue
window.returnValue = undefined;
var dlgReturnValue = window.showModalDialog(...);
if (dlgReturnValue == undefined) // We don't know here if undefined is the real result...
{
    // So we take no chance, in case this is the Google Chrome bug
    dlgReturnValue = window.returnValue;
}
window.returnValue = prevReturnValue; // Restore the original returnValue

この時点で、さらに処理を行うために dlgReturnValue を使用します。モーダル ダイアログ ウィンドウで次の操作を行います。

if (window.opener)
{
    window.opener.returnValue = dateValue;
}
window.returnValue = dateValue;
self.close();
于 2013-02-19T10:12:04.067 に答える