CGI-BBS > JAVA/JavaScript > JavaScript > サブウィンドウが開いたウィンドウを閉じることができない


カレッヂ
カレッヂ


質問者 GONE  投稿日 2005/10/12(水) 19:47:15
msgWindow=window.open("","navi","width=*,height=*,top=*0,left=*")

これで開いたページはmsgWindow.close();で閉じることが出来ますが
msgWindowが開いたページにjavascriptで別のページを開く設定がしてあった場合には
このページをclose()する場合にはどうしたらよいのでしょうか。

【習熟度】初めて

回答者 sim  [削除]  投稿日 2005/10/13(木) 03:20:11
作って遊んでたらでかくなっちゃいました。
参考になれば。

windowControl.html
-----------------------------------------------------------------------
<h1>親window操作</h1>
<script type="text/javascript" src="windowControl.js"></script>
<input type="button" value="WINDOW OPEN" onclick="WO('windowControl2.html')">
<div id="deleteButton"></div>
-----------------------------------------------------------------------

windowControl2.html
-----------------------------------------------------------------------
<h1>子window操作</h1>
<script type="text/javascript" src="windowControl.js"></script>
<input type="button" value="WINDOW OPEN" onclick="WO('windowControl3.html')">
-----------------------------------------------------------------------

windowControl3.html
-----------------------------------------------------------------------
<h1>孫window操作</h1>
<script type="text/javascript" src="windowControl.js"></script>
<input type="button" value="WINDOW OPEN" onclick="WO('どっかの.html')">
-----------------------------------------------------------------------


windowControl.js
-----------------------------------------------------------------------

	var KoW = new Array();
	var objOYA,obj;
	var windowNo = 0;
	var windowName = window.name;
	var parentName = '';

	//共通
	function WO(url){
		if(windowName == parentName){//親です。
			openW(url);
			objOYA = window;
		}else{//子です
			objOYA = opener.getParentWindowName();
			opener.objOYA.openW(url);
		}
	}

	//親専用
	function DelW(n){
		KoW[n].close();
		KoW[n] = '';
		makeButton();
	}

	//親専用
	function openW(url){
		KoW[windowNo] = window.open(url,windowNo,"width=300,height=300");
		windowNo++;
		makeButton();
	}

	//親専用
	function makeButton(){
		obj = document.getElementById('deleteButton');
		obj.innerHTML = '';
		for(i = 0;i < windowNo;i++){
			if(KoW[i]){
				obj.innerHTML = obj.innerHTML + '<input type="button" value="WindowNo.' + i + '削除" onclick="DelW(' + i + ');">';
			}
		}
	}

	//共通
	function getParentWindowName(){
		return objOYA;
	}

	//共通
	window.onunload = function(){
		if(windowName == parentName){//親です。全ての子を消す。
			for(i = 0;i < windowNo;i++){
				if(KoW[i]){
					KoW[i].close();
				}
			}
		}else{//子です。自分の窓削除ボタンを消す。
			opener.objOYA.KoW[windowName] = '';
			opener.objOYA.makeButton();
		}
	}
-----------------------------------------------------------------------

意図したものと違ってたらごめんなさい。

返信(回答)する

 


Web裏技