- PR -

javascriptでwindow.openした時に起こる事象

投稿者投稿内容
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-06-09 13:08
訂正:
コード:

<html>
<head>
<script>
var win = null;
if (location.search.lastIndexOf("KO") < 0) {
	win = window.open("TEST1.html?KO","aaaa","width=1,height=1,top=100,left=100");
}
else {
	window.onload = function() {
		setTimeout(function() {
			(window.open("","_self").opener = window).close();

		}, 6000);
	}
}
function win_open() {

	(window.open("","_self").opener = window).close();

	if (!win)
		win.close();

}
</script>

</head>
<body>
<button onclick="win_open()">Click me</button>
いろは
</body>
</html>






実際に試してみたが、スレ主さんの言う小窓が一瞬っていう現象は
確認できません。
window.open("","_self") ってのは、新しいのを開かないで自身を
返すのですね。不勉強でした。謝ります。

width=1,height=1 としても、窓サイズは 100*100 以下にはなりません。
1ドットにしているのだから見えないはずだ、と思っていた窓が実は
100*100 で表示されていたので一瞬開いて見えます、という錯覚だった、
というオチじゃないのですか?上記スクリプトは、それを確認するための
ものです。

どっちにしても、(window.open("","_self")).close() ってのは、
IEアイコンをクリックしたときに開かれる最初の窓以外には関係の無い
コードです。親があって、そこからスクリプトやリンクで開かれた小窓は
通常の _self.close() で閉じることが出来ます。


ローカルで試すとスクリプト実行時のセキュリティバーが出てしまうので
タイムリーな操作や事象は確認しにくいのですが、サーバーで動作したと
仮定した場合、スレ主の提示した、最初の windowopen() でPOSTしたフォ
ームがレスポンス返すのに0.5秒掛かった場合、開いた小窓の生存期間も0.5秒
+αなわけですが、スレ主は1ドットで開いた限りなく小さな窓なのでチラ
つくこと自体が稀でほとんど見えないとおもっているのでしょうが、実際
には100*100以下には小さくならないので、この0.5秒程度の間に
見えるはずの無い小窓が見えた瞬間、親画面も閉じたので、何か怪しい小窓
が開いていると錯覚したのでしょうね。

では。
ぱると
会議室デビュー日: 2006/12/21
投稿数: 17
投稿日時: 2008-06-09 13:16
Java全然関係なくなりますが、
閉じるボタンがsubmitしていて、window.closeした後にサーバ側の処理が走っているのが原因だと思います。

追記:
window.close();return false;
とかってすれば良いかもしれないですね。

追記2:
↑のはボタンのonClickの話です。

追記3:
それ以前にsubmitしなければいいのかorz

[ メッセージ編集済み 編集者: ぱると 編集日時 2008-06-09 13:18 ]

[ メッセージ編集済み 編集者: ぱると 編集日時 2008-06-09 13:21 ]

[ メッセージ編集済み 編集者: ぱると 編集日時 2008-06-09 13:23 ]
復活したスライム
常連さん
会議室デビュー日: 2006/06/26
投稿数: 28
投稿日時: 2008-06-09 13:50
ぱると様

お世話になります。
window.close();return false;
で解決しました。
仰せの通り、window.closeした後にサーバ側の処理が走っていたようです。
有難うございました。

ぴあちゃん様

サンプルソースまで作っていただいて解析して頂き、有難うございました。
少し後になるかもしれませんが、私のほうでも事象が発生するサンプルソースを提示したいと思います。

以上です。

スキルアップ/キャリアアップ(JOB@IT)