フレームの制御
-
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
- ありがとうございました。
解決しました。