showModelessDialog()

画面表示の際に、アドレスバーを非表示にしたいということがあると思います。
セキュリティの観点から言えばアドレスバー非表示というのはよろしくないのですが、
非表示にしなければいけない場面もあると思います。

そこで今回はモーダレス画面でのアドレスバー非表示の方法をご紹介します。

まず、画面の種類について簡単に。

  • モーダル:モーダル画面での処理が終わるまで、他の画面に触れず、処理も行われない
  • モーダレス:モーダレス画面を表示していても、他の画面に触れ、処理も同時に行われる

最も簡単なアドレスバー非表示の方法はopen()のオプション使用です。

open(URL, WindowName, Option["option1=値, option2=値, ..."])

 

  1. URL:画面に表示するページのURL
  2. WindowName:画面を識別する名前
  3. 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:値; ...;"])

 

  1. URL:画面に表示するページのURL
  2. WindowName:画面を識別する名前
  3. 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()を使用するしかないようです。