@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

JavaScriptのEvent.clientXプロパティの値が子画面の有無で変わる

1
投稿者投稿内容
みきティ
会議室デビュー日: 2008/08/17
投稿数: 1
投稿日時: 2008-08-17 23:10
はじめまして。自作ソフト用WEB画面の開発を行っている「みきティ」と申します。
JavaScriptについての疑問なので、JavaSolution会議室に書き込んだほうがよいとも思いましたが、.NETを使用して製作しているので、こちらに書かせていただきました。

今回、私の作っているWEB画面で、Windowsブラウザの「×」ボタンが押されたことを認識させようと考えております。製作環境は.NETでIEはバージョン6です。

実現させる処理としては、onBeforeUnloadイベントの処理中にEvent.clientXで押された座標を読み取り判定させることで×ボタンが押されたことを判別しようと考えております。

実装してみたところ、単体の画面(1画面表示)の場合は、意図した値を読み取ることができました。しかし、window.openで親画面を表示したまま子画面を開くと、親画面で×ボタンを押したときの座標が、親画面のみの表示(1画面表示)で押したときの座標より150ほど小さい値となってしまうようです。
何度か行ってみたところ、子画面を開いてしまうと子画面を閉じても、親画面でEvent.clientXで取得される値が150小さくなるようです。


この原因や親画面と子画面を同時に表示しているときにも対応した×ボタン押下を読み取る処理をご存知の方、ご教授ください。

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-08-18 00:50
現象が確認できません。
ミニマムコード提示してください。

コード:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD> 
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<script>

window.onbeforeunload = function() {

	var ss = "<table border>";
	
	for (var s in event) {
		if (s == "boundElements") {
			alert(event[s].length);
		
		}
		ss += "<tr><th>" + s + "</th><td>" + (event[s])  + "</td></tr>";
	}
	
	ss += "</table>";
	
	document.getElementById("debug").innerHTML = ss;
	
	event.returnValue = "閉じるの?";
}

function aaa() {
window.open("","www","width=100,height=100,location=no,status=no,toolbars=no");
}
</script>
</HEAD>
<BODY>
<input type=button value="OK" onclick="aaa()">

<div id="debug">
</div>

</BODY>
</HTML>




コード:
  -- WinXPHome IE6-SP2結果(小窓開いていない状態)
recordset null 
type beforeunload 
fromElement null 
toElement null 
altLeft false 
keyCode 0 
repeat false 
reason 0 
behaviorCookie 0 
contentOverflow false 
behaviorPart 0 
dataTransfer null 
ctrlKey false 
shiftLeft false 
dataFld  
returnValue undefined 
qualifier  
wheelDelta 0 
bookmarks null 
button 0 
srcFilter null 
nextPage  
cancelBubble false 
x 0 
y 0 
srcElement null 
screenX 1108 
screenY 78 
srcUrn  
boundElements [object] 
clientX 724 
clientY -60 
propertyName  
shiftKey false 
ctrlLeft false 
offsetX 0 
offsetY 0 
altKey false 

  -- WinXPHome IE6-SP2結果(小窓開いた状態)
recordset null 
type beforeunload 
fromElement null 
toElement null 
altLeft false 
keyCode 0 
repeat false 
reason 0 
behaviorCookie 0 
contentOverflow false 
behaviorPart 0 
dataTransfer null 
ctrlKey false 
shiftLeft false 
dataFld  
returnValue undefined 
qualifier  
wheelDelta 0 
bookmarks null 
button 0 
srcFilter null 
nextPage  
cancelBubble false 
x 0 
y 0 
srcElement null 
screenX 1110 
screenY 79 
srcUrn  
boundElements [object] 
clientX 726 
clientY -59 
propertyName  
shiftKey false 
ctrlLeft false 
offsetX 0 
offsetY 0 
altKey false 



冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-08-18 09:43
だから、JavaとJavaScriptは全然違うものだと何度言ったら・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-08-19 07:36
メニューから閉じる
Alt + F4
は、どうなるのかなぁ?
マウス カーソルを閉じるボタンに置いて、ctrl + R とかも
1

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