子ウィンドウから親のURLを参照するには?

[上に] [前に] [次に]
とっと 2000/01/31(月) 18:15:46
こんにちは。いつも参考にさせてもらっています。
それで唐突ですが・・・

IEにおいてJavascriptを使って子ウィンドウを作成したときに、
この子ウィンドウから親ウィンドウのURLを取得したいのですが、
HTTP_REFERERを使っても値が取れなく困っています。

それで、その後Javascriptでopener.document.URLとしたのですが
どうしてもスクリプトエラーになってしまいます。

どなたかJavascriptを使って親ウィンドウのURLを取れたかた
いらっしゃらないでしょうか?

 #ちなみにネスケ、IE5.5ではできるのですが・・・

PTAN 2000/01/31(月) 18:55:35
opener.location.hrefでどうでしょう?

とっと 2000/01/31(月) 19:33:22
次のようなものでやってみたのですが、やはりだめでした。
HTMLに不慣れなものでソースにおかしなところがありましたらご指摘ください。
parent.htmlからchild.htmlを呼びます。

-----------parent.html---------------------
<html>
<head>
<script>
<!--
function opennewwindow(url)
{
window.open(url,"NewWindow","dependent=1");
}
// -->
</script>
</head>
<body>
<a hrefF="javascript:opennewwindow('child.html')">子ウィンドウ</a>
</body>
</html>

----------child.html----------------------
<html>
<head>
<script language="javascript">
<!--
document.write(opener.location.href);
//-->
</script>
</head>
<body></body>
</html>


次のようなものでやってみたのですが、やはりだめでした。
HTMLに不慣れなものでソースにおかしなところがありましたらご指摘ください。
parent.htmlからchild.htmlを呼びます。

-----------parent.html---------------------
<html>
<head>
<script>
<!--
function opennewwindow(url)
{
window.open(url,"NewWindow","dependent=1");
}
// -->
</script>
</head>
<body>
<a href="javascript:opennewwindow('child.html')">
子ウィンドウ</a>
</body>
</html>

----------child.html----------------------
<html>
<head>
<script language="javascript">
<!--
document.write(opener.location.href);
//-->
</script>
</head>
<body></body>
</html>

とっと 2000/01/31(月) 19:34:29
すみません、ctrl+cを連打してしまいました・・・

PTAN 2000/01/31(月) 20:08:41
IEのバージョンは何でしょう?
当方IE4SP2で上記HTMLを作って試してみましたが、
opener.location.hrefでもopener.document.URLでも
動きました。

とっと 2000/01/31(月) 21:04:30
PTANさん、ありがとうございます。IEは5.01です。
PTANさんのお言葉をヒントに色々と試してみました。

その結果ですが、どうやらドメインをまたいでしまうと
エラーが出てしまうらしいです。
自分のマシンでサーバを立ててやってみたところ
うまく親のURLが取れたのですが、
同じファイルで、子を別サーバのファイルにすると
エラーになってしまいました。

さらにそのことはIEで起こって、ネスケ(4.07)では
ちゃんと表示されました。

うーん、こればっかりは仕方がない問題として
受け取るしかないのでしょうか?

げん 2000/02/01(火) 10:22:18
全然違うかもしれませんが
フレームの書き方で申し訳ないですけど、
  parent.frames[0].location.hostname;
  parent.frames[0].location.search;
なんてのがあるみたいです。
これを加工して使ってみては?

とほほさんの
http://www.tohoho-web.com/js/window.htm#Window
にありました。

マック 2000/02/01(火) 15:37:59
IE5.0+PWSでも動作しました。IE5.1の調子が悪いとか?

たろー 2000/02/03(木) 16:51:18
#プロバイダA、プロバイダB に
# parent.html、child.htmlを置いて、ためした結果
とっと氏のおっしゃるとおり、見えませんね〜。
(親URLを)どうしても知りたいのなら、
引数で渡してもらうしかないのかなぁ。

とっと 2000/02/04(金) 11:41:23
[[解決]]
みなさん、本当にありがとうございました!
結局対策方法として、たろーさんが言ってくださったような
引数を使ってみることにしました。
げんさんのお言葉から、フレームを用いることも考えましたが
それだと別のページを1つのブラウザ画面に表示すること
になって、見にくいページなってしまうのでやめることにしました。
また、これからもこれについて実験してみたいと思うのではっきりと
したことがわかりましたらまたかかせていただきたいと思います。

#マックさんへ、
 すみません。IE5.0+PWSのPWSって何でしょうか?
 もしよろしければ教えていただけませんでしょうか。

マック 2000/02/04(金) 16:31:37
マックです。

>すみません。IE5.0+PWSのPWSって何でしょうか?
>もしよろしければ教えていただけませんでしょうか

イントラネット内で良く使われるWEBサーバでパーソナルWEBサーバのことです。Win95/98でも動作します。このWEBサーバだと動作が異なるかなと思いまして。

[上に] [前に] [次に]