処理の概要
URLを指定して任意の大きさで新しいウィンドウを開く
処理のフロー:
(1)入力された値(リンク、幅、高さ)が入力されているかをチェックする
(2)入力された値(リンク、幅、高さ)を取得する
(3)ポップアップメッセージを出力する
(4)Yesが選択されたら新しいウィンドウを開く
画面イメージ
画像1

画像2

ソースコード
index.html
<body onload="init()">
<form name="form1">
<p>
<input type="button" name="btnOpen" value="Open" onclick="openWindow()">
<input type="button" name="btnClose" value="Close" onclick="closeWindow()">
</p>
<p>URL:<input type="text" name="txtUrl"></p>
<p>幅:<input type="text" name="txtWidth"></p>
<p>高さ:<input type="text" name="txtHeight"></p>
</form>
</body>
main.js
function init(){
document.form1.txtUrl.value = "http://www.ank.co.jp";
document.form1.txtWidth.value = "600";
document.form1.txtHeight.value = "480";
document.form1.btnClose.disabled = "true";
}
function openWindow(){
var errMsg = errorCheck();
if (errMsg !=""){
alert(errMsg + "が入力されていません");
return;
}
var url = document.form1.txtUrl.value;
var width = document.form1.txtWidth.value;
var height = document.form1.txtHeight.value;
if (confirm("新しいウィンドウを開いてもよいですか?")){
mywin = window.open(url,"","width=" + width + ",height=" + height);
document.form1.btnClose.disabled = false;
}
}
function closeWindow(){
mywin.close();
document.form1.btnClose.disabled = true;
}
function errorCheck(){
var errMsg = "";
for(i=0; i<document.form1.length; i++){
if(document.form1.elements[i].type == "text"
&& document.form1.elements[i].value == ""){
switch(document.form1.elements[i].name){
case "txtUrl":
errMsg += "[URL]";
break;
case "txtWidth":
errMsg += "[幅]";
break;
case "txtHeight":
errMsg += "[高さ]";
break;
}
}
}
return errMsg;
};
ポイント
html:
(1)各ボタンにメソッドを紐付ける
js:
(1)値を取得するまえに入力チェックを行う(errorCheckメソッド)
(2)window.openメソッドの第一引数は、「url」、このほかオプションの設定が出来る
(3)openされたら、closeボタンオブジェクトを有効化する。
(4)form1のオブジェクトを「form1.elements[i]」で配列として取得し、switchに渡して制御する
参考資料
JavaScript(仕事の現場でサッと使える!デザイン教科書) p74