2009-04-08 20 views
11

window.showModalDialog関数を使用する場合の状況は何ですか? window.open関数といくつかのクロム(ナビゲーション、アドレスバーなど)を削除するパラメータはまったく同じです。window.showModalDialogとwindow.openの比較

いつ、window.showModalDialogとwindow.openを使用しますか?

答えて

10

モーダルダイアログは、親によって開いたダイアログであり、ダイアログが閉じられるまで親にフォーカスすることはできません。

ログインフォーム、編集フォームなどのモーダルダイアログを使用して、ユーザーとの対話のためのポップアップを作成したいが、ポップアップを開いたウィンドウに戻ることはできません。

補足として、私はInternet Explorerだけがwindow.showModalDialogを実装していると信じています。

+0

最終的にFF3があります。クロムもそうだけど、本当にモーダルだとは思わない(その背後をクリックできる)。 –

+0

window.openへのパラメータは、それをモーダルにすることができます – geowa4

+1

https://developer.mozilla.org/en/window.openに従って:モーダル:Mozilla 1.2.1から、この機能にはUniversalBrowserWrite特権が必要です。この特権がなければ無視されます。 –

3

Chrome 2にshowModalDialog()が正しく読み込まれないというバグがあります。ポップアップウィンドウが表示されますが、コンテンツはロードされません。

もう1つの理由は、showModalDialog()の使用を避けるためです。

0

showModalDialog()は、Internet Explorer、Firefoxの(3以上)Chromeで Worksでうまく動作しますが、ポップアップが

17

この質問はもともと頼まれたと物事はそれ以来少しも変わってきたので、それは数年が経ちました。 window.showModalDialogは公式にstandardized as part of HTML5になり、IE、Firefox 3+、Chrome(albeit buggy)、およびSafari 5.1+でサポートされています。

残念ながら、window.showModalDialogは、まだ多くの問題に悩まされています。

  • モーダルダイアログは、Firefox、Chrome、Safariではデフォルトでポップアップとしてブロックされます。
  • Chromeのモーダルダイアログはバグがあり、実際にはモーダルではありません。http://code.google.com/p/chromium/issues/detail?id=16045 & http://code.google.com/p/chromium/issues/detail?id=42939を参照してください。
  • Chromeを除くすべてのブラウザは、モーダルダイアログが開いているときに、ユーザーがウィンドウ全体(お気に入り、ブラウザコントロール、その他のタブなど)とやりとりするのをブロックします。
  • モーダルダイアログが完了するのを待っている間、親ウィンドウでJavaScriptの実行を停止するため、デバッグが苦労します。
  • モバイルブラウザがサポートされていませんwindow.showModalDialog

したがって、まだwindow.showModalDialogを使用することはお勧めできません。ウィンドウをモーダルにする必要がある場合(すなわち、ユーザーがダイアログを処理するまでページの他の部分と対話できない場合)、jQuery UI's dialog pluginを使用することをお勧めします。

window.openはモーダルでないウィンドウでも機能しますが、新しいウィンドウを開くとユーザーを怒らせる傾向があるため、jQuery UIのダイアログに固執します。

私はこのことについて、私のブログ - http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-it/で詳細に書いています。

0

ポップアップウィンドウからモーダルを表示できますが、一部のブラウザ(IE、Safari)ではモデルダイアログからwindow.openを使用できません。

関連する問題