説明
Prototype Window Classライブラリを利用すると手軽にページ内にマルチウィンドウを表示することができます。Prototype Window Classライブラリを動作させるにはprototype.jsライブラリとscript.aculo.usライブラリのエフェクト(effects.js)ファイルが必要です。あらかじめ、prototype.js、script.aculo.usライブラリのファイルを読み込ませておきます。
ウィンドウを生成するにはnew Window()とします。最初のパラメータにウィンドウIDを指定します。複数表示する場合には、このウィンドウIDが重複しないようにしてください。2番目のパラメータはオプションパラメータでプロパティリスト(ハッシュ)形式で指定します。指定できるパラメータを表1に示します。
ウィンドウが閉じられたらウィンドウ情報(ウィンドウオブジェクト)も破棄するようにsetDestroyOnClose()を指定します。これを指定しないと内部ではウィンドウ情報が残ったままになります。ウィンドウを表示するにはshow()を使います。表示されたウィンドウ内に文字などを表示するにはsetHTMLContent()を使います。
ウィンドウのドラッグ、リサイズ、クローズなどの処理は自動的に行われるため特に指定する必要はありません。
表1
名前 | 初期値 | 内容 |
className | dialog | クラス名 |
title | none | ウィンドウタイトル |
url | none | URL(別ぺージを表示する場合に指定) |
parent | body | ウィンドウの親ノード |
top | bottom | top:0 | ウィンドウの表示Y座標(上) |
bottom | --- | ウィンドウの表示Y座標(下) |
left | left:0 | ウィンドウの表示X座標(左) |
right | --- | ウィンドウの表示X座標(右) |
width | 100 | 横幅 |
height | 100 | 縦幅 |
maxWidth | none | 最大幅(横) |
maxHeight | none | 最大幅(縦) |
minWidth | 100 | 最小幅(横) |
minHeight | 20 | 最小幅(縦) |
resizable | true | リサイズ可能フラグ(true : リサイズ可能、false : リサイズ不可) |
closable | true | クローズ可能フラグ(true : クローズ可能、false : クローズ不可) |
minimizable | true | 最小化ボタン(true : ボタンあり、false : ボタンなし) |
maximizable | true | 最大化ボタン(true : ボタンあり、false : ボタンなし) |
draggable | true | ドラッグ可能フラグ(true : ドラッグ可能、false : ドラッグ不可) |
showEffect | Effect.AppearまたはElement.show | ウィンドウ表示時のエフェクト |
hideEffect | Effect.FadeまたはElement.hide | ウィンドウクローズ時のエフェクト |
showEffectOptions | none | ウィンドウ表示時のエフェクトオプション(script.aculo.us参照) |
hideEffectOptions | none | ウィンドウクローズ時のエフェクトオプション(script.aculo.us参照) |
effectOptions | none | エフェクトオプション(script.aculo.us参照) |
onload | none | 読み込みが完了した時に呼び出す処理 |
opacity | 1 | 不透明度(0〜1.0) |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" href="default.css" type="text/css" media="all">
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="effects.js"></script>
<script type="text/javascript" src="window.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>ページ内にマルチウィンドウを表示する</h1>
<form action="./multi.cgi" method="get" name="mainForm">
<input type="button" id="openButton" value="ウィンドウを開く">
</form>
</body>
</html>
window.onload = function(){
document.getElementById("openButton").onclick = function(){
multiWindow.open("win01", "Sample1", 80, 100, 320, 240);
multiWindow.open("win02", "Sample2", 160, 160, 320, 240);
}
}
var multiWindow = {
open : function(winID, wTitle, x, y, w, h){
var win = new Window(winID, {
title: wTitle, className: "dialog",
top:y, left:x, width:w, height:h, zIndex: 100,
resizable: true, draggable:true
});
win.setDestroyOnClose();
win.show();
win.setHTMLContent("ウィンドウが表示されます");
}
}