webForumDet fria alternativet

Scrolla två frames samtidigt?!

5 svar · 422 visningar · startad av R.E

R.EMedlem sedan okt. 200314 inlägg
#1

Jag sitter med en stor sajt där det krävs frames (även om jag inte gillar det) för att få navigation m.m. att fungera bra.

Menyn ligger i en frame till vänster och huvudsidan (main) till höger. Önskemålet är att båda ramarna följer med varandra när man scrollar. Det är här mitt problem börjar... Jag kommer inte på hur jag ska göra?!

"Effekten" ska alltså bli som på en sajt som saknar ramar, där hela sidan rör sig vertikalt när man scrollar.

Hjälp mottages tacksamt...

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Välkommen till wF.

Exempel frameset:

<script type="text/javascript">
function syncscroll(ofs){
	a.scrollTo(0,ofs);
	b.scrollTo(0,ofs);
}
</script>
<frameset cols="*,*">
	<frame src="a.html" name="a">
	<frame src="b.html" name="b">
</frameset>

Och sedan i a.html & b.html:

<script type="text/javascript">
window.onscroll=function(){ parent.syncscroll((document.all)?document.body.scrollTop:pageYOffset); }
</script>

Vill du ha med x-led också så är det bara att skicka med det som ett argument till syncscroll också.

R.EMedlem sedan okt. 200314 inlägg
#3

Tack både för välkomnandet och för koden.

Hittade nästan exakt samma funktion genom lite Googlande för ett tag sedan.

Tack ändå, fint med sån snabb respons!

R.EMedlem sedan okt. 200314 inlägg
#4

Jojoxx skrev:

<script type="text/javascript">
function syncscroll(ofs){
a.scrollTo(0,ofs);
b.scrollTo(0,ofs);
}
</script>
<frameset cols="*,*">
<frame src="a.html" name="a">
<frame src="b.html" name="b">
</frameset>

Och sedan i a.html & b.html:

<script type="text/javascript">
window.onscroll=function(){ parent.syncscroll((document.all)?document.body.scrollTop:pageYOffset); }
</script>

Finns det några begränsningar i det här scriptet? Alltså, skulle det kunna strula/synca sämre om man har en sajt med mycket besökare, mycket trafik osv?

Tacksam för svar...

Mvh,
Rasmus

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Det har jag svårt att tro. Det är ju något som sker hos klienten.
Men visst blir sidor sega av för mycket besökare, men det är ju något som är allmänt.

R.EMedlem sedan okt. 200314 inlägg
#6

Är tillbaka igen, med ytterligare önskan om hjälp...

Jag har implementerat den syncfunktion som jag använder mig av.

Så här ser koden ut:

<SCRIPT>
var tid;
function initScrollSynchronization () {
tid = setInterval('syncFrame()', 1);
}
function syncFrame () {
if (document.all && !window.opera) {
var scrollTop = frame1.document.body.scrollTop;
var scrollLeft = frame1.document.body.scrollLeft;
}
else {
var scrollTop = frame1.pageYOffset;
var scrollLeft = frame1.pageXOffset;
}
frame0.scrollTo (scrollLeft, scrollTop);
}
</SCRIPT>

</HEAD>
<FRAMESET rows="*" COLS="21%,79%" frameborder="no" ONLOAD="initScrollSynchronization()">
<FRAME NAME="frame0" SRC="menu.html" scrolling="no">
<FRAME NAME="frame1" SRC="main.html">
</FRAMESET>
<noframes></noframes>

Koden verkar dock inte fungera riktigt bra. Så fort en sida med andra JavaScripts laddas så slutar ovanstående kod att fungera och hänvisar till felaktigheter i rad nr. 3

tid = setInterval('syncFrame()', 1);

Jag hoppas någon av er alla förmågor i forumet kan hjälpa mig.

Ödmjukast,
Rasmus

129 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
126 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)