私はこれを試しましたが失敗しました:
var win = showModalDialog('http://localhost/index.php');
win.close();
私はこれを試しましたが失敗しました:
var win = showModalDialog('http://localhost/index.php');
win.close();
モーダルウィンドウの定義は、モーダルウィンドウが閉じられるまで現在の関数の実行が停止することです。つまり、への呼び出しは、showModalDialog()
表示されているダイアログが閉じるまでブロックされます。したがって、ウィンドウがすでに閉じられた後win.close()
に呼び出されます(意図したものではありません)。
いくつかのオプションがあります:
ダイアログを非モーダルとして表示し、特定の条件が満たされるまでイベントループで待機します。次に、呼び出し元の関数からウィンドウを閉じます。
モーダルダイアログは適切なタイミングで閉じます。
を実行するshowModalDialog
と、コードシーケンス全体がブロックされます。続行するにはモーダルウィンドウを閉じる必要がありますwin
がnull
、それまでに:P
モーダル ダイアログとは、ダイアログが閉じられるまで次の演算子が実行されないことを意味します。これが、次の行に何を置いても機能しない理由です。
これがモーダル ダイアログの目的です。現在のウィンドウをフリーズし、ユーザーから必須の入力を取得します。すぐに閉じたい場合は、モーダル ダイアログは必要ないと思います。
ちなみに、showModalDialog の戻り値はダイアログの戻りコードであり、ウィンドウ変数ではありません!
通常、モーダル ダイアログは内部から閉じられます。ユーザーの入力を待ちたくない場合は、index.php コードにそれを閉じる何かが必要です。