フレームの解除について
[上に]
[前に]
[次に]
fumi
[E-Mail]
1999/08/19(木) 14:04:40
はじめのメイン画面を上下のフレームに分け、
上フレームのリンクをクリックするとフレームが解除されて
次のhtmlが表示され、下フレームのリンクをクリックすると
WindowsのFTPダウンロードのメッセージ画面を表示する機能にしたいのですが、
formタグのtarget属性ではうまく行きません。(どちらか一方なら
うまくいくのですが)
何方か別の方法をご存知の方がいましたら、教えてください
Tmb
1999/08/19(木) 14:51:34
上下のそれぞれのリンク部分は,どのように記述されてますか?
「どちらか一方ならうまくいく」というのであれば,その書き方に問題が
あるような気がしますので,その部分を示していただければ何か判るかも
しれないです。
fumi
[E-Mail]
1999/08/19(木) 15:13:16
失礼しました。
上フレームはsubmitボタンを使用し、hiddenのvalueで
イベント名を示してそのイベントを走らせます。
下フレームはherfでjavascriptの関数を指定し、
titleでダウンロードしたいファイル名を指定しています。
これで手がかりになるでしょうか?
Tmb
1999/08/19(木) 15:26:27
も,もう少し詳しくお願いします (^^; というより,当該部分のソースを見せて下されば。
#文章にして説明されるより,ソースを見たほうが判りやすいですから。
どの仕組みを使ってるか(<A href>か,submitか,JavaScriptか etc)だけでなく,
どこでtargetを何に指定してるかとか,その他の情報が知りたいので。
fumi
1999/08/19(木) 15:59:46
上フレーム
<FORM METHOD=POST NAME="f" TARGET="_top">
<INPUT TYPE="hidden" NAME="button" VALUE="GR01SiteiIn_TEST_Btn">
<INPUT TYPE="submit" VALUE="テスト" onClick="return(JS_EventControl())">
↑クリックされた時、return(JS_EventControl())はjavascreptイベントが複数走るのを防ぐ関数
下フレーム
<FORM METHOD=POST NAME="f" TARGET="_self">
<A HREF="JavaScript:Exec_GR01Download_Download('http://ABC/CSV/TEST.dat', 1);" TITLE =TEST.dat >売上一覧</A>
↑Exec_GR01Download_Downloadの引数の1つめはダウンロードしたいファイルのurlで2つめはテーブル表示になっているので
それの何番目かのインデックスを取得しています。
今度はどうでしょうか?
Tmb
1999/08/19(木) 16:25:15
ぱっと見た感じ,上のには問題がないような。
#でもactionのないsubmitって・・・?
あとは下フレームで使ってるJavaScriptのソースを見せてもらわないことには。
<A>は別にFORMの子要素ではないから,いくら中に挟んだとしてもFORMのtarget
指定は無意味だと思いますが。
普通の場合なら<A>に直接target指定すればいいですが,JavaScript呼び出しと
なるとちょっと事情が変わってきますので。
#中で正しくsubmitしてるんなら動くはずだと思いますけど。
それから<BASE target>は使ってませんか? 念のため確認。
fumi
1999/08/19(木) 16:35:05
上フレームのsubumitのイベントはhiddenのvalueで指定したイベントです。
それから、<BASE target>は使っていません。
下フレームjavascriptのソースです。
function Exec_GR01Download_Download(url,index)
{
window.top.frame1.document.f.button.value='GR01Download_Download_Btn';
window.top.frame1.document.f.GR01_Select_No.value = index;
window.top.frame1.document.f.submit();
// ダウンロード済マーク(一時的)
index = index % 10
if (index == 0 )
{
index = 9
}
else
{
index = index - 1
}
Dw[index].innerHTML = '<FONT SIZE=2>○'
// ダウンロード画面の表示
self.location.href = url;
}
わかりにくくてすみません;
愚者
1999/08/19(木) 16:48:53
index.htmlのソース
<FRAMESET ROWS="50%,50%">
<FRAME SRC="xxx.html" NAME="top">
<FRAME SRC="yyy.html" NAME="bottom">
</FREMESET>
xxx.htmlのソース
<FORM ACTION="???" METHOD="???" TARGET="_top">
〜〜〜〜〜〜
</FORM>
yyy.htmlのソース
<FORM ACTION="???" METHOD="???">
〜〜〜〜〜〜
</FORM>
で新しいhtmlファイルを作ればよいのでは?
ん?なんか意味がちがうかな?
愚者
1999/08/19(木) 17:03:11
あっ すいません、質問よく読んでなかったです。
>下フレームのリンクをクリック
でも上と同じようにフレーム解除するんですか?
ターゲットをしっかりすれば大丈夫だと思いますが、、、
Tmb
1999/08/19(木) 17:13:47
>下フレームjavascriptのソースです。
(略)
>window.top.frame1.document.f.submit();
もしかして原因はこれではないですか?
下フレームの関数が呼び出されると上のフォームがsubmitされ,その時点で
フレームが解除されてしまうとか。
#一応,この行だけコメントにして確認していただければ。
もしそうなら,この行の前に
window.top.frame1.document.f.target="_self"
を付けてみるとか。
#使ったことないので動作するか判りません。
#それともしかしたら"_self"でなくwindow.top.frame1という形
#で指定するかも。もっともそれ以前に,書き換え可能かどうか確認してないですが。
fumi
1999/08/19(木) 18:01:05
javascriptのソースを
・・・・・・
window.top.frame1.document.f.target="_self"
window.top.frame1.document.f.submit();
・・・・・・
のように修正したところ
上下ともきちんと機能しました。
・・・・・・
// window.top.frame1.document.f.submit();
・・・・・・
でも機能します。
ただ、
・・・・・・
window.top.frame1.document.f.target=window.top.frame1
window.top.frame1.document.f.submit();
・・・・・・
だと、ダウンロード画面でキャンセル後、上フレームhtmlが全画面表示に
なってしまいます。
それから、下フレームのリンクは、フレームの解除を行わないので、
下フレームの<FORM>でtargetを指定してもしなくても
どちらでもよいようです。
おかげさまで解決しました。ありがとうございました。
Tmb
1999/08/19(木) 18:07:45
老婆心ながらもう1つだけ補足。
>window.top.frame1.document.f.target="_self"
>window.top.frame1.document.f.submit();
の後に,今度は
window.top.frame1.document.f.target="_top"
を付けておいた方がいいかもしれません。
#あるいは上のフォームのsubmitのonClick時の関数に,このtargetを"_top"にする
#一文を追加するとか。
そうしないともしかしたら,下のリンクでダウンロード→上のボタンでsubmit
したとき,上のボタンを押してもフレームが解除されなくなるかもしれませんので。
fumi
1999/08/20(金) 14:00:29
[[解決]]
上フレーム<form>でtarget="_top"を指定しない場合、Tmbさんが補足で
かいてくれた記述がないとフレーム解除ができませんが、
targetを指定した場合、記述がなくても大丈夫のようです。
が、念のため<input type=submit>にtarget="_top"を追加しておきました。
(javascriptの方でもよいのですが、後で分かりにくいと思ったので...)
[上に]
[前に]
[次に]