- 追加された行はこの色です。
- 削除された行はこの色です。
[[HTML/JavaScript集]] > サブウィンドウ存在チェック(JavaScript)
* サブウィンドウ存在チェック(JavaScript) [#kfe89977]
#setlinebreak(on);
親画面がサブミットされた後も、子ウィンドウを残す場合でも使える存在チェック
【サブウィンドウ存在チェック(親)】
<html>
<head>
<script type="text/javascript">
var subWinMap = {};
function isClosedSubWin(id){
closedFlg = true;
try {
var obj = subWinMap["subwin"+id];
closedFlg = (!obj.closed) ? false : true;
} catch (e){}
return closedFlg;
}
function openSubWin(id){
var objSubwin = window.open("subwin.html?id="+id, "subwin" + id);
subWinMap["subwin"+id] = objSubwin;
}
function checkSubWin(id, objSubwin){
subWinMap["subwin"+id] = objSubwin;
window.setTimeout("removeAttr(" + id + ")", 100);
}
function removeAttr(id){
if (isClosedSubWin(id)) {
alert("subwin " + id + " is closed!");
}
}
function setSubwinObj(id){
var objSubwin = subWinMap["subwin"+id];
objSubwin.objOwn = objSubwin;
}
</script>
</head>
<body>
<h1>親画面<h1>
<form action="parent.html">
<input type="submit" value="submit">
</form>
<input type="button" value="open subwin1" onclick="openSubWin('1');">
<input type="button" value="open subwin2" onclick="openSubWin('2');">
</body>
</html>
【サブウィンドウ存在チェック(子)】
<html>
<head>
<script type="text/javascript">
var objOwn = null;
var id = null;
window.onunload = function(){
opener.checkSubWin(id, objOwn);
}
function setSubwinInfo(){
var url = new String(location);
var args = url.split("id=");
id = args[1];
document.forms[0].id.value = id;
document.getElementById("title_id").innerHTML = id;
window.opener.setSubwinObj(id);
}
</script>
</head>
<body onload="setSubwinInfo();">
<h1>subwin<span id="title_id"></span><h1>
<form action="subwin.html" method="get">
<input type="hidden" name="id" value="">
<input type="submit" value="submit button">
</form>
</body>
</html>