- PR -

親画面(フレーム有り)遷移後も、子が親の情報を覚えておくには

投稿者投稿内容
MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-03-14 11:38
>Jitta 様

ご回答ありがとうございます。

>そもそも、他のドメインへいくのに、フレームの中で遷移するのが間違っているのでは?

実装は独自の検索機能(同ドメイン)で
yahooへの遷移は、想定されるブックマーク等からのユーザー操作だったのですが
どちらにしても私自身が_top と _parentの区別がついていませんでした。

_parentはフレームがネストされている場合だったのですね。
貴重なご指摘ありがとうございます。

>RegisterClientScriptBlock とか、 RegisterStartupScript とかを使いましょう。

Response.Writeは’ダウト’なのですね。
テストした時に(今もテスト中ですが)質問の遷移以外実行できたので
意識しておりませんでした。
こちらも貴重なご指摘、誠にありがとうございます。

>He様
重要なヒントと暖かいお言葉ありがとうございます。
おそらく再質問させていただくと思うのですが、
まず質問の質問を書けるように頑張っておりますので
お返事がもう少し遅くなりそうですみません。

MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-03-14 14:53
>He様

子画面に Pwin = window.opener.top;
を追加することで希望の動作ができました。
ありがとうございます!


ただこれですと、自分としては完璧に希望の動きなのですが、
He様の
> targetにしたリクエストがだせれば良いわけです。
> ダミーのformをサブミットさせる
のアドバイスが全く生かせれておりませんで、

> 予めフレームセットのウィンドウに名前を付ける
をPwin=のような代入ではなく nameの意味かな、と思い
以下のような事を行ってみましたが的外れでした。

親画面 framepage.html内=========================
<FRAMESET COLS="50%,*" FRAMEBORDER=1 NAME="OYA">
子画面 newpage.html内===========================
<BODY onload="window.document.formSubmit.submit();">

<form name="formSubmit" action="framepage.html" target="OYA">
<input type="submit" value="送信">
</form>
===============================================

せっかく頂いたアドバイスを理解できず不甲斐なく思っております。

表題の件についてはHe様と皆様のおかげで解決致しました。

貴重なお時間を割いていただき、深くお礼申し上げます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-14 15:28
引用:

MIさんの書き込み (2007-03-14 11:38) より:

>RegisterClientScriptBlock とか、 RegisterStartupScript とかを使いましょう。

Response.Writeは’ダウト’なのですね。
テストした時に(今もテスト中ですが)質問の遷移以外実行できたので
意識しておりませんでした。
こちらも貴重なご指摘、誠にありがとうございます。

出来た HTML をよく見てみましょう。一応解釈してくれますが、HTML ではなくなります。
_________________
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2007-03-14 19:50
引用:

MIさんの書き込み (2007-03-14 14:53) より:
子画面に Pwin = window.opener.top;
を追加することで希望の動作ができました。


え?あ。。。ホントだ。これでできますね。知らなかった
事前にPwinにwindowの参照をとっておけば、そのwindowの内容のドメインが変わっても、Pwin.location.hrefを書き換えられる、と。...ψ(。。)メモメモ...
一つおりこうになりました。ありがとうございます。

で、私が提示していたやり方ですが、こんな感じです。
コード:
=====newpage.html=============================================
<HTML> 
<HEAD> 
<SCRIPT language="JavaScript"> 
// ※フレームセットのウィンドウに名前を付ける
window.opener.top.name = "framepage";
〜略〜
window.alert(myError + "画面が遷移していたので元に戻します"); 
// formをsubmitさせることで、画面遷移を行う
// ※opener.location.href = 'framepage.html'; 
f1.submit();
}} 

//--> 
</SCRIPT> 
</HEAD> 

<BODY>
〜略〜
<!-- ※targetにフレームセットのウィンドウを設定しておく -->
<form id="f1" method="get" action="framepage.html" target="framepage"></form> 
</BODY></HTML>


ともあれ、解決したようでよかったですね。



以下、余談。
Jittaさんも仰ってますが、ブックマーク等からのユーザー操作で別ドメインのページに遷移するということは、元のアプリでの作業を終了しているということになるのでは?
子画面操作で親画面を元に戻すよりも、親画面遷移時に子画面を閉じる方が一般的かと思います。
まぁこの辺は仕様との兼ね合いなので、「こういう要件だ」と言うことならば私が口を挟むことでもありませんが。

また、ASP.NETはリクエストやレスポンスを絶妙に隠蔽しています。
通常のWebページを作成するうえでResponse.Writeなどレスポンスを直接さわる必要はまずありません。
おそらく(.NETでない)ASPからの慣習だと思いますが、ASPとASP.NETは仕組みが大きく変わっているので、別物として捉えた方が学習しやすいかと。

以上、お節介とは思いますがご参考になれば。

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