2

ページがモーダルダイアログにロードされたことを検出する方法はありますか?window.showModalDialog()を呼び出すときなど。

少し背景:モーダルダイアログに表示されるログインページのフォーム認証の問題を回避しようとしています。その後、ユーザーがログインしたときにサイトの残りの部分が表示されます。

何か案は?

4

1 に答える 1

6

window.open の場合、現在表示しているページに親があるかどうかを確認できます。

function parentExists(){
     return (window.opener != null)? true : false;
}

ログインページが読み込まれるときにこれを呼び出します。true が返された場合は、ポップアップ ウィンドウ (またはモーダル) にいます。その後、ページを閉じて、親をリダイレクトできます。

オープナーにアクセスできないため、モーダル ボックスの場合は少し注意が必要です。まず、すべてのモーダル ボックスが次のように開いていることを確認します。

window.showModalDialog('test.htm', self, <optional options>);

これにより、ウィンドウの引数に何かが確実に渡されます。

ログインページに次のコードを追加します。

function parentExists()
{
    var opener = window.dialogArguments;
    return (opener == null)?false:true;
}

編集:モーダルボックスに関する追加情報

于 2009-05-27T20:17:55.413 に答える