- PR -

window.opner の「戻る」ボタン等の対応について

1
投稿者投稿内容
salf
会議室デビュー日: 2006/06/29
投稿数: 5
投稿日時: 2006-08-01 16:16
お世話になります。

現在親画面をクリックし子画面を表示し、
その子画面から親画面のURLを取得する操作する処理を行っております。

親画面が閉じられた場合は window.opener.closed にて取得し、
処理を行わないようにしているのですが、
ブラウザの「戻る」ボタン等で画面を遷移した場合、
window.opener.location.href でURLを取得するとエラーとなってしまいます。

親画面がブラウザの「戻る」ボタン等で画面を遷移した場合、
子画面にてそれを取得することは可能なのでしょうか?

以下に簡単なコードをのせておきます。

parent.html

コード:
<HTML> 
<HEAD> 
<TITLE></TITLE> 
<SCRIPT TYPE="text/javascript"> 
<!-- 
// サブウィンドウを開く処理 
function disp(url){ 
window.open(url, "_blank", "scrollbars=yes,resizable=yes,status=yes"); 
} 
// --> 
</SCRIPT> 
</HEAD> 
<BODY> 
<A HREF="javascript:disp('chiled.html')">サブウィンドウを開く</A> 
</BODY> 
</HTML> 



chiled.html

コード:
<HTML> 
<HEAD> 
<TITLE></TITLE> 
<SCRIPT TYPE="text/javascript"> 
<!-- 
// サブウィンドウを開く処理 
function dispURL(){ 
	if(window.opener.closed){
		alert("画面が閉じられています");
	}
	else{
		alert(window.opener.location.href);
	}
	alert("処理完了");
} 
// --> 
</SCRIPT> 
</HEAD> 
<BODY> 
<A HREF="javascript:dispURL()">前画面URL表示</A> 
</BODY> 
</HTML> 

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-08-01 16:54
try〜catchして例外を捕まえたなら、openerはもう使えない…という方法はどうでしょうか。
salf
会議室デビュー日: 2006/06/29
投稿数: 5
投稿日時: 2006-08-01 17:29
引用:

try〜catchして例外を捕まえたなら、openerはもう使えない…という方法はどうでしょうか。


javascript で try 〜 catch 構文が使用できるとは知りませんでした。
上記方法で対応可能なのは確認できました。ありがとうございます。

追って質問なのですが、上記方法はかなりの力技だと思っています。
window.opener で「戻る」ボタンを使用された場合の対処というのは
上記方法しかないのでしょうか?

ご回答よろしくお願いいたします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-08-01 18:02
戻るボタンが押されてからではもう遅いので、親のunloadイベントで子に何か通知してやったらどうでしょうか。
salf
会議室デビュー日: 2006/06/29
投稿数: 5
投稿日時: 2006-08-02 09:49
引用:

戻るボタンが押されてからではもう遅いので、親のunloadイベントで子に何か通知してやったらどうでしょうか。


やはりそういう方法しかないんですね・・・。

今回は try 〜 catch で対応できましたので、そちらを使用することにしました。
mio 様、どうもありがとうございました。
1

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