フレームの制御



0   名前: 御名方 : 2006/02/24 09:17
現在、フレームを使って2分割しているHTMLをつくっています。
その際、左のフレーム(メニュー)と右のフレーム(色々表示)にわけてあるのですが、
JavaScriptをつかってスクロールバーを同期させています。

しかし、右側のサイトの内容が変わってしまうと、スクロールバーの同期がはずれてしまいます。
解決策はあるのでしょうか?

//現在のフレームの作り方//
<script language="JavaScript">

<!--

window.onload=init

ie=false
nn=false
if(document.all){ie=true}
if(navigator.appName=="Netscape"||navigator.userAgent.indexOf("Opera")!=-1){nn=true}

function init(){
if(ie){
frames[0].document.body.onscroll=scrollie
frames[1].document.body.onscroll=scrollie
}
if(nn){
scroll=new Array(0,0)
scrollnn()
}
}

function scrollie(){
if(frames[0].event){
frames[1].scrollTo(0,frames[0].document.body.scrollTop)
}
if(frames[1].event){
frames[0].scrollTo(0,frames[1].document.body.scrollTop)
}
}

function scrollnn(){
var scr0=frames[0].pageYOffset
var scr1=frames[1].pageYOffset
if(scr0!=scroll[0]){
//左がスクロール
frames[1].scrollTo(0,scr0)
scroll[0]=scr0
scroll[1]=scr0
}else{
if(scr1!=scroll[1]){
//右がスクロール
frames[0].scrollTo(0,scr1)
scroll[0]=scr1
scroll[1]=scr1
}}
setTimeout("scrollnn()",500)
}

//-->

</script>

<TITLE>タイトル</TITLE>

<frameset frameborder="0" cols="150px,*">
<frame NAME="menu" src="mokuzi.html" scrolling="no" noresize>
<frame NAME="main" src="season.html" noresize>
</frameset>

//以上//


1   名前: かわうそ : 2006/02/24 09:17
おそらくmainフレームに表示させる全てのhtmlに、
<body onload="top.init();">
を入れておけば大丈夫かと。
(思いつきですので間違ってる可能性があります・・・)

2   名前: 御名方 : 2006/02/24 09:17
まずはじめに、かわうそさんレスありがとうございます。

onload="top.init();"
をbodyにいれることによりそれらしい動きにはなったのですが、
メニューで左側の内容を変更した時に
メニューがその位置のままなのでそれを一番上にもっていきたいです。

後、今作っているホームページは外部掲示板を読込んでいるので、できればbodyに
追記する形ではなく、さきほどのフレームのソース内にやりたいのですが、
なんとかなりませんか?

3   名前: かわうそ : 2006/02/24 09:17
>メニューで左側の内容を変更した時に
>メニューがその位置のままなのでそれを一番上にもっていきたいです。
「メニューで右側の内容を変更した時に」ですよね?
メニューのリンクにonclickを仕込んで(0,0)にスクロールさせればいいのでは?

>後、今作っているホームページは外部掲示板を読込んでいるので、できればbodyに
>追記する形ではなく、さきほどのフレームのソース内にやりたいのですが、
>なんとかなりませんか?
IEであればmainフレームのdocument.readyStateを監視して"complete"になった後に
top.init()を実行させるということが出来ますが、他のブラウザは分かりません。

4   名前: 御名方 : 2006/02/24 09:17
ありがとうございました。
解決しました。

一覧へ戻る