フレーム間で参照できる?

[上に] [前に] [次に]
ワンダ 2000/01/12(水) 14:32:41
frame1でCGIを呼び、CGI(test1.cgi)側では、main.htmlを書き換えてframe1に表示します。
そして、frame2のsub.htmlでボタンが押されたときにmain.htmlのvalueの値を参照したいのですが、参照できません。
どうも根本的に考え方が違うのかもしれないと思ってきたのですが(当方初心者のため)、どうしたら書き換え後のhtmlの値を参照することが出来るのでしょうか?
教えて下さい〜よろしくお願いします。

--index.html------------------------------------------------------
<HTML>
<FRAMESET rows="20%,80%">
<FRAME src="test1.cgi",target="_top" name="frame1">
<FRAME src="test2.html",target="_top" name="frame2">
</FRAMESET>
<BODY>

</BODY>
</HTML>

--sub.html------------------------------------------------------
<HTML>
<SCRIPT Language="JavaScript">
<SCRIPT Language="JavaScript">
<!--
function copy(){
document.fs.ts.value=parent.main.document.fm.tm.value;
}
// -->
</SCRIPT>
<HEAD><TITLE>sub</TITLE></HEAD><BODY><BODY>
<FORM NAME="fs">
<INPUT NAME="ts" VALUE="sub">
<INPUT TYPE="button" VALUE="copy" onClick="copy()">
</FORM>
</BODY></HTML>

--test1.cgi------------------------------------------------------
$file="main.html";
open FILE, $file or die "$file オープン失敗";
print "Content-type: text/html\n\n";
s/<INPUT NAME=\"tm\" VALUE=\"\">/<INPUT NAME=\"tm\" VALUE=\"aaaaaaaa\">/;
print;

(基本)
--main.html------------------------------------------------------
<HTML><HEAD><TITLE>main</TITLE></HEAD><BODY>
<FORM NAME="fm"><INPUT NAME="tm" VALUE=""></FORM>
</BODY></HTML>

(書き換え後)valueに追加
--main.html------------------------------------------------------
<HTML><HEAD><TITLE>main</TITLE></HEAD><BODY>
<FORM NAME="fm"><INPUT NAME="tm" VALUE="aaaaaaaa"></FORM>
</BODY></HTML>

ラウォッチ 2000/01/12(水) 15:35:28
イマイチ、自信ないですが
document.fs.ts.value=parent.main.document.fm.tm.value;

document.fs.ts.value=parent.frame1.document.fm.tm.value;
では?

ワンダ 2000/01/12(水) 16:08:06
ラウォッチ さん。ありがとうございました。
すいません私の書き間違えでした。。。
document.fs.ts.value=parent.frame1.document.fm.tm.valueが正解です。

parent.frame1.document.fm.tm.valueで「アクセスが拒否されました」と出るんです。。。

アクセス拒否ということは根本的な問題?と私は勝手に思ったんですがどうなんでしょうか?

ラウォッチ 2000/01/12(水) 16:34:40
よくわかりません。
はじめのソースみると、結構おかしな点がありますねぇ。
<SCRIPT>や<BODY>が余分にあったり、test1.cgiもなんか変です。
たとえば、main.htmlをオープンしていますが、標準出力しているのか、
main.htmlそのものを書き換えているか?
また、<INPUT NAME="ts" VALUE="sub">も変ですねぇ。

基本的にはボタンを押された時点で、すでに片方のフレームでデータセット
されていれば
parent.frame1.document.fm.tm.value
で参照はできるはず!?

ワンダ 2000/01/12(水) 16:46:14
すいません。BODYやSCRIPTもコピー間違いです。
<INPUT NAME="ts" VALUE="sub">も、書き間違えです。
ああもう。。。本当にすいません〜!

main.htmlは標準出力しています。
標準出力が問題なんですかね?そんな事はないんですか?
いきなり<FRAME でcgiを呼んでしまっているのがおかしいのか。。。

うううううう

片方のフレームにデータがセットされていれば、それがCGIで書かれたもんだろうがなんだろうが値は参照できるんでしょうか?

ラウォッチ 2000/01/12(水) 17:17:29
ん〜。
同じサーバーなら参照できると思いますが...。
ちなみに、別サーバーはダメみたいです。(セキュリティの関係で)
>CGIで書かれた
っていうのが気になります。
もしかしたら、ダメなのかなぁ?
知っている方、教えて下さい。

ワンダ 2000/01/12(水) 17:34:23
サーバーは同じです。
う〜ん。う〜ん。う〜ん。
すいませんが教えて下さいいいいい。

shin' [E-Mail] 2000/01/13(木) 00:15:40
CGIの入っているディレクトリはcgi-binかなにかでしょうから
サーバーは同じでもディレクトリが違う。
>アクセスが拒否されました
と出るならdocument.domainプロパティを設定してみては?
詳細はこのサイトのJavaScript入門を参照してください。

ワンダ 2000/01/13(木) 11:31:12
なるほどお!モヤモヤが晴れた感じです〜
shinさんありがとうございました!!
やってみますね。

ワンダ 2000/01/13(木) 14:02:41
残念ながら、document.domainはIEでは対応していないプロパティのようです。
困りましたああ。IEでもNNでも動かせるようにしたいんですよね。

shin' 2000/01/14(金) 00:26:41
おや?domainプロパティはJavaScript1.1なんで大丈夫なはずですよ。
サーバーが違わないという前提のもとで、
http://www.domain.co.jp/なら
document.domain="domain.co.jp";
と記述してください。
それでもだめならどこかのサイトに現在のソースをあげてみて
みなさんからの意見をつのったらどうでしょう。

ワンダ 2000/01/15(土) 15:14:35
[[解決]]
有り難うございました!!

http://localhost/test1.cgi

とパスを切り直したら出来ました。
本当にみなさん有り難うございました〜(感謝)

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