knirsch: Scrollen einer Seite im Firefox

Beitrag lesen

Hallo ChrisB,

Da die Seite(n) bei direktem Aufruf von der Festplatte genau das tun, was sie sollen, habe ich das Problem weniger auf das Java Script geschoben als auf den FF.

Hier nun alles von vorne:

Von einem Kollegen habe ich zur Anzeige von Mitteilungen (täglich ändernde und längerfristige) folgende HTML-Seiten bekommen:

1. Start.html
Sie erzeugt zwei Frames. Einen für die täglichen Mitteilungen (subframe.htm) und einen für die längerfristigen (mitteilung.htm).

<html>  
<meta http-equiv="refresh" content="600; URL=START.HTML">  
  
<head>  
<title>Anzeige</title>  
</head>  
<frameset rows="*,1" framespacing="0" frameborder="0" border="0">  
<frame src="subframe.htm" scrolling="no" noresize>  
<frame src="mitteilung.htm" scrolling="no" noresize>  
</frameset>  
</html>

2. subframe.htm
Diese Seite dient zum Aufruf der Seite heute.htm, die automatisch mit Überschrift+Datum und Inhalt erzeugt wird.
Hier werden wieder drei Frames erzeugt. Der 1. Frame zeigt die Überschrift von heute.htm an. Der 2. Frame dient zum anzeigen der Meldungen, die gescrollt werden sollen, und der 3. Frame zum Laden der Datei scroller.htm.

<html>  
<head>  
<title>Anzeige</title>  
</head>  
<frameset rows="145,*,1" framespacing="0" frameborder="0" border="0">  
<frame src="heute.html" scrolling="no" noresize>  
<frame src="heute.html" scrolling="no" noresize name="frame">  
<frame src="scroller.htm" scrolling="no" noresize>  
</frameset>  
</html>

3. scroller.htm
Sie dient zum Scrollen des Inhaltes der Datei heute.htm. Hier steckt auch der Java Script Code.

<html>  
<head>  
<title>Anzeige Scroller</title>  
  
</head>  
  
<script language="JavaScript">  
  
var h1 = window.parent.frame.document.body.scrollHeight;  
var h2 =  739 /*window.parent.frame.document.body.offsetHeight; Der Befehl funktioniert im FF nicht korrekt, deshalb fester Wert*/  
var timeout;  
var y;  
var p = 145/*  Pixelhöhe der Überschrift - siehe subframe.htm */  
var step = 1; /* Anzahl der Pixel die gescrollt werden */  
  
function start() {  
stop();top();setTimeout("scrolldown()",2500);  
}  
  
function stop() {  
clearTimeout(timeout);  
}  
  
function top() {  
window.parent.frame.scroll(0,p);  
y = p;  
}  
  
function scrolldown() {  
if (y < p) {  
 y = p;  
 }  
window.parent.frame.scroll(0,y);  
y = y + step;  
if (y < h1 - h2) {  
 timeout=setTimeout("scrolldown()",30); /* Verzögerung beim Scrollen (ms) */  
 }  
else {  
 stop();setTimeout("scrollup()",6000); /* Wartezeit OBEN (ms) */  
 }  
}  
  
function scrollup() {  
window.parent.frame.scroll(0,y);  
y = y - step;  
if (y > p) {  
 timeout=setTimeout("scrollup()",30); /* Verzögerung beim Scrollen (ms) */  
 }  
else {  
 stop();top();setTimeout("scrolldown()",4000); /* Wartezeit UNTEN (ms) */  
 }  
}  
  
</script>  
  
  
<body onload="start()"></body>  
  
</html>

Vielleicht kann man das Alles auch etwas einfacher Stricken.

Grüße
knirsch