- PR -

フレーム間のリンクについて

1
投稿者投稿内容
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-09-10 17:29
いつもお世話になっております。51と申します。
現在ASP.Net(C#)で開発を行っています。

フレームを設定された画面(以下、frame1,frame2とする)で、
[frame1]のリンクをクリックすると、[frame2]は再読み込みせずに
指定されたブックマークに移動する…という
動作を行いたいのですが、上手く動作させることができません。

「frame1」のリンクにjavascriptで
-------------------------------------------------------------
parent.frame2.location.href = 'frame2.aspx#bookmark'
-------------------------------------------------------------
と記述すると、frame2.aspxの再読み込みを行ってしまうので、

clickイベントで[frame2]の関数を呼び出し、
[frame2]の関数で、自画面のブックマークに移動するようにしました。
-------------------------------------------------------------
location.href = '#bookmark'  //自画面のlocatonを変更
-------------------------------------------------------------
ですが、実行するとの[frame2]に[frame1]の画面が表示されてしまいます。

フレームをまたがったブックマークの指定はできないのでしょうか?


HTML+javascriptのみで試しても同事象が発生したので
ASP.Netとは関係がないと思うのですが、
どうぞ、ご教授の程よろしくお願い致します。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-09-10 18:38
引用:
実行するとの[frame2]に[frame1]の画面が表示されてしまいます。

location.hash = 'bookmark'
でアンカーだけ移動できるのではないですかね。

ただ、以下の場合
引用:
「frame1」のリンクにjavascriptで
-------------------------------------------------------------
parent.frame2.location.href = 'frame2.aspx#bookmark'
-------------------------------------------------------------
と記述すると、frame2.aspxの再読み込みを行ってしまうので、

こちらで最小のサンプルを作って試してみましたがframe2は
再読み込みされずに#bookmarkに移動しましたよ。それに、
この動作だけならリンクではなくてhtmlボタンでいいと思うのですが。
リンク自体のhrefには何が指定されているのだろう。

追記
あ、hrefでjavascriptを書いているということか。
あと、確かにアプリケーションドメインが異なると動作が変わりますね・・

[ メッセージ編集済み 編集者: べる 編集日時 2004-09-13 09:11 ]
momotaro
会議室デビュー日: 2003/07/23
投稿数: 14
投稿日時: 2004-09-10 20:13
フレーム内の各コンテンツって全部同じドメインですか?
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-09-13 14:43
べる様、momotoro様お返事ありがとうございました。
土日を挟んでしまって、レスが遅くなってしまい大変失礼致しました。

べる様の書いていらっしゃった通り「hash」プロパティの指定で、
イメージ通り動作させることができました。
(hashというプロパティを初めて知りました・・・勉強、調査不足です。
申し訳ありません・・・)
解決はしたのですが、下記にご指摘頂いた内容の回答を記述しておきます。

本当にありがとうございました。




  引用: べる様
  --------------------------------------------------------------------------------
  こちらで最小のサンプルを作って試してみましたがframe2は
  再読み込みされずに#bookmarkに移動しましたよ。それに、
  この動作だけならリンクではなくてhtmlボタンでいいと思うのですが。
  リンク自体のhrefには何が指定されているのだろう
  --------------------------------------------------------------------------------
お客様の要望で、見た目をリンクにして欲しいとのことでしたので、
htmlボタンは使用していませんでした。
リンクのhrefにはjavascriptを書いています。
こちらのサンプルではやはり再読み込みしてしまうのですが、
何か変な記述をしてしまっているのでしょうか・・・。


  引用: momotaro様
  --------------------------------------------------------------------------------
  フレーム内の各コンテンツって全部同じドメインですか?
  --------------------------------------------------------------------------------
全て同じドメインです。



べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-09-13 16:58
私は以下のように試していました。
parent.main.location.href = 〜 を<a>タグのhrefに直接書くとframe1の方が
切り替わってしまうというのは確かにありますが。
あと、'frame2.aspx#bookmark'の部分は、あくまでframe1から見た相対アドレスに
なりますね。

<HTML>
<head>
<script language="javascript">
function bookmark()
{
parent.main.location.href = 'frame2.aspx#bookmark';
}
</script>
</head>
<body>
<a href="javascript:bookmark()">bookmark</a>
</body>
</HTML>

#ドメインが異なるページのhashを変更しようとするとIEではエラーでますね。
#ネスケでは平気なのですが・・
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-09-13 17:53
べる様 お返事ありがとうございます。

全く同じコードを貼り付けて実行してみたのですが、
やはり、frame2.aspxを再読み込みしてしまいます。
(frame2.aspxのPage_Loadイベントにブレークポイントを設定して確認しました)
不思議です・・・。
IEのバージョンは6.0なのですが、バージョンに関係するものでしょうか・・・。

  引用: べる様
  ---------------------------------------------------------------------------
  #ドメインが異なるページのhashを変更しようとするとIEではエラーでますね。
  #ネスケでは平気なのですが・・
  ---------------------------------------------------------------------------
そうなのですね。
今回は、ドメインも同じでブラウザもIE限定なので特に問題はないと思います。
今後は意識するようにします。
知らないことばかりでお恥ずかしいです。
ありがとうございました。

1

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