半透過ウィンドウの生成

DOM(Document Object Model)とは,JavaScriptからHTMLの要素を操作できるよう,W3Cにより規定されている概念です(参考:DOMとは何か).
HTMLタグを階層構造の形で管理しています.
DOMにより,JavaScriptを用いて動的にWebページの構成を変更することができます.

<script type="text/javascript">
// ↓これで,id属性値が'hoge'のdivセクションが取得できる
var hoge_elem = document.getElementById('hoge');
...いろんな処理...
</script>
<body>
  <div id="hoge">
    ほげほげ
  </div>
</body>

これらにスタイルシートを組み合わせることで,擬似ポップアップウィンドウを作成することができます.
ここで,擬似的である理由は,

<html>
  <head>
  <title>テスト</title>
  <script type="text/javascript">
    // サブウィンドウを開く処理
    function openWindow(url)
    {
      window.open(url, "window_name", "width=250,height=250,scrollbars=yes,resizable=yes,status=yes");
    }
  </script>
  
  </head>
  <body>
    <input type="button" value="開く" onclick="javascript:openWindow('http://www.google.co.jp')"/>
  </body>
</html>

という方法とは異なり,HTMLとCSSを組合せてウィンドウのように見せかけるからです.
今回はさらに,半透過性(translucency)も持たせています.

基本的な処理手順は,

  1. バー,ボタン,クライアント領域(←のつもり,コンテンツ領域の方が良い?)をHTML要素としてCreateし,スタイルを設定する
  2. 各Eventをaddする
  3. ウィンドウをHTML要素としてCreateし,スタイルを設定する
  4. バー,ボタン,コンテンツをウィンドウへappendChildする
  5. ウィンドウを'body'へappendChildする

(ボタン以外は,全て'div'をCreateします)

  • バーに対して,'mousedown','mousemove','mouseup','mouseout'イベントのリスナを追加
  • ボタンに対して,'click'イベントのリスナを追加
  • コンテンツに対して,'mousedown'イベントのリスナを追加

(各リスナのfunctionは,コードを参照)

また,ポップアップウィンドウがクリックされたとき,そのウィンドウが最前列へ表示されるようにする必要があります.
この処理には,wnd_obj.style.zIndexを使用します.


ポップアップウィンドウ生成時には,zIndex=='0'となっています.
そこで,クリックされたウィンドウはzIndex=='1',それ以外のウィンドウはzIndex=='0'となるように,処理を追加します.


結果,このようになります→
今回のウィンドウを作成した理由は,「実用性を狙う」というよりも「遊び心」です.
(正しく動作するものは,研究室に行ってからUPすることにしよう...)