showModelessDialog()
画面表示の際に、アドレスバーを非表示にしたいということがあると思います。
セキュリティの観点から言えばアドレスバー非表示というのはよろしくないのですが、
非表示にしなければいけない場面もあると思います。
そこで今回はモーダレス画面でのアドレスバー非表示の方法をご紹介します。
まず、画面の種類について簡単に。
- モーダル:モーダル画面での処理が終わるまで、他の画面に触れず、処理も行われない
- モーダレス:モーダレス画面を表示していても、他の画面に触れ、処理も同時に行われる
最も簡単なアドレスバー非表示の方法はopen()のオプション使用です。
open(URL, WindowName, Option["option1=値, option2=値, ..."])
- URL:画面に表示するページのURL
- WindowName:画面を識別する名前
- Option:画面作成の際のオプション
- width:ウィンドウ幅
- height:ウィンドウ高さ
- left:ウィンドウX座標
- top:ウィンドウY座標
- menubar[yes/no]:メニューバー表示・非表示
- toolbar[yes/no]:ツールバー表示・非表示
- location[yes/no]:アドレスバー表示・非表示
- status[yes/no]:ステータスバー表示・非表示
- resizable[yes/no]:リサイズの可否
- scrollbars[yes/no]:スクロールバー表示・非表示
しかし、ここで問題があります。
open()では、親画面がモーダル画面だった場合、
子画面がアドレスバー非表示オプションを付けていようと
強制的にアドレスバーが表示されてしまいます。
そこで活躍するのが、showModelessDialog()です。
これを使うことで簡単にアドレズバー非表示のモーダレス画面が作れます。
ただ、ひとつ注意ですが、これはブラウザがIEのみしか使えません。
showModelessDialog(URL, WindowName, Option["option1:値; option2:値; ...;"])
- URL:画面に表示するページのURL
- WindowName:画面を識別する名前
- Option:画面作成の際のオプション
- dialogWidth[px]:ウィンドウ幅
- dialogHeight[px]:ウィンドウ高さ
- dialogLeft[px]:ウィンドウX座標
- dialogTop[px]:ウィンドウ上Y座標
- center[yes/no]:画面を中央に表示するか
- help[yes/no]:ヘルプボタン表示・非表示
- minimize[yes/no]:最小化ボタン表示・非表示
- maximize[yes/no]:最大化ボタン表示・非表示
- status[yes/no]:ステータスバー表示・非表示
- resizable[yes/no]:リサイズの可否
- scroll[yes/no]:スクロールバー表示・非表示
showModelessDialog()では、オプションのstatusをnoに設定すればアドレスバーを非表示に出来ます。
statusはデフォルトではnoに設定されているので、オプションを一切付けずに
作成するだけでもアドレズバー非表示の画面が作れます。
ただし、またここでもひとつ問題があります。
もし、struts2を使用し、遷移先画面をアノテーション設定している場合、
showModelessDialog()を使用すると、2重で画面が起動してしまいます。
解決するには、アノテーションを設定しないか、前述した問題を回避するように
画面構成をしopen()を使用するしかないようです。