別フレームに文字を書き出したときに、最下行を表示させるには?

[上に] [前に] [次に]
ponwill [E-Mail] 2000/02/10(木) 14:26:56
parent.frame[*].document.writeを使って複数行の
書き出しを別のフレームに行うときに、
行数がおおくその最下行まで表示されないとき、
必ず最下行が表示されるようにするには、
どうするのでしょうか?
location.hashでできるのでしょうか?

ponwill 2000/02/10(木) 16:07:35
ええと、もう少し具体的に質問します。
parent.f1.document.write("<A NAME='#BTM'>ここに来ます!!</A>");
parent.f1.location.hash ="#BTM";
(注 f1はフレームの名称)
と、ゆーふーにやってもうまく行きません。
アドバイスお願いします。

無責任官庁 2000/02/10(木) 16:59:46
必要なdocument.write 全部終わった時点で、
document.close() して、それから location.hash ではどうでしょう?

と、それと・・・location.hash には“#”は、いりません。
parent.f1.location.hash ="BTM";//←こんなの。

ponwill 2000/02/10(木) 18:02:52
無責任間長様。返答ありがとうございます。
parent.f1.document.write("<A NAME='#BTM'>ここに来ます!!</A>");
document.close();
parent.f1.location.hash ="BTM";
でも状況はいっしょでした(ToT)
ちなみに、どうなるかとゆーと、
元のフレームをf2とすると、
parent.f1.location.hash ="BTM";
の実行により、f1がf2と同じになってしまいます。
どなたか、助けてください。

かえる 2000/02/10(木) 18:36:23
document.write後にscrollTo()関数等で最下行までスクロールすればよいのでは?

IEだとこんな感じで。
parent.f1.scrollTo(0,doc.document.body.scrollHeight+document.body.clientHeight);

ゆうまじろう [E-Mail] 2000/02/10(木) 18:44:34
もしかしたら、
document.close();を、
parent.f1.document.close();
というふうにフレームを指定しないといけないのでは?
確認取れない環境にいるので、自信がありませんが…。

ponnwill 2000/02/10(木) 18:57:25
ゆうまじろうさま。ありがとうございます。
間違えてました。parent.f1.document.close();でやってました。
parent.f1.document.write("<A NAME='#BTM'>ここに来ます!!</A>");
document.close();
parent.f1.location.hash ="BTM";
は、書き間違いです。
かえるさま。ありがとうございます。
parent.f1.scrollTo(0,doc.document.body.scrollHeight+document.body.clientHeight);の"doc."って、何を定義すれば良いのでしょうか?

かえる 2000/02/10(木) 19:35:08
置き換えるの忘れてました。

parent.f1.scrollTo(0 , parent.f1.document.body.scrollHeight + parent.f1.document.body.clientHeight);

1番目の引数に水平方向の、2番目の引数に垂直方向のスクロール量を指定します。
IEの場合だと現在の表示領域の高さと、スクロールする非表示部分の高さを足すことで求められますが、NNのほうはよく知らないので...

ponwill 2000/02/11(金) 19:25:20
かえる様。どうもありがとうございます。
内容は理解しましたが、どうしても一番したまでいかないのです。
例えば100行書くと90行ぐらいまでしか、
スクロールしません。どうしてでしょうか?

Mugi [E-Mail] [HomePage] 2000/02/11(金) 22:56:26
> 例えば100行書くと90行ぐらいまでしか、
> スクロールしません。どうしてでしょうか?
document.closeのあと、ページが完全にロードされる前にスクロールしているせいでしょう。

こんなのはどうでしょう?
<script language="javascript1.2">
parent.f1.document.open()
parent.f1.document.writeln(〜)
parent.f1.document.close()
if(document.layers){
parent.f1.onload=scrolltobottom //IEではこの方法は効かなかった
}
if(document.all){
while(parent.f1.document.body.readyState!="complete"){}
setTimeout("scrolltobottom()",1000) //これでうまくいかなかったらここの数字を増やしてみてください
}

function scrolltobottom(){
if(document.all){
parent.f1.scrollTo(0,parent.f1.document.body.scrollHeight)
}
if(document.layers){
parent.f1.scrollTo(0,10000) //scrollHeightに相当するプロパティはない
}
}
</script>

ponwill 2000/02/12(土) 13:02:59
Mugiさま。ありがとうございます。
NNでは、うまく行きましたが・・・・
IEでは、f1に書き出すアクションを開始すると
固まってしまうようになってしまいました。
??????です。

Mugi [E-Mail] [HomePage] 2000/02/12(土) 17:46:01
今試したら、〜.onload=がIEでも使えました。
document.closeより下の行すべてを削除して、これに変えてください。

parent.frames[0].onload=scrolltobottom
if(document.all){
setTimeout("scrolltobottom()",1000)
}

ponwill 2000/02/12(土) 20:31:25
たびたびどうもありがとうございます。
いま、試しましたが、
IEもNNもscrolltobottomが宣言されていない
(scrolltobottom is not defined)と言われてしまいました。
これって、メソッドですか?
scrolltobottom()としてもだめでした。
ブラウザのバージョンのせいでしょうか?
IEは4.0、NNは4.03です。
IEは5.0、NNは4.09であとでも試してみますが・・・・

Mugi [E-Mail] [HomePage] 2000/02/12(土) 21:22:00
もしかして、関数まで消しちゃった?(^^;
関数は書き出しもとのHTMLファイル内に書いておいてください。

ponwill 2000/02/14(月) 17:09:08
[[解決]]
Mugiさま、いろいろありがとうございました。解決です。
闇雲に関数の部分まで消してしまってました。
ばっちりです!

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