Scrollen geht nicht richtig!

mille

Erfahrenes Mitglied
Hallo!

Ich habe auf einer Webseite ein Iframe verwendet, welches über 2 eigene "Pfeile" gescrollt werden soll.
Nach einer Weile Suchens hab ich dann auch n passendes Skript gefunden und angepasst. Hier der Javascriptcode:

Code:
<script type="text/javascript">
 <!--
 var anfang = 1;
 var speedup = 3;
 var speedwn = 3;
 
  function runter() {
  gutjetzt = setInterval("parent.frames.content.scroll(0,anfang+=speedwn)",10);
  }
  
  function hoch() {
  gutjetzt = setInterval("parent.frames.content.scroll(0,anfang-=speedup)",10);
  }
  
  function anhalten() {
  clearInterval(gutjetzt);
  }
 -->
 </script>

verwendet habe ich das ganze wie folgt im html code:

HTML:
<a href="#" onmouseover="hoch()" onmouseout="anhalten()">
 <a href="#" onmouseover="runter()" onmouseout="anhalten()">

Das ja auch. zumindestens im Firefox. Im IE geht das ganze schon wieder nicht.
Das wäre Problem Nummer eins.
Das zweite und irgendwo nervigere Problem (nicht aber schwerwiegendere) folgt:
Wenn ich das IFrame selbst runterscrolle (mit meinem Scrollrad), und danach die Pfeile zum Scrollen nutze, dann beginnt das runterscrollen wieder von ganz oben, obwohl ich vielleicht schon am Ende war (Es muss also irgendwie die Aktuelle Position gespeichert werden).
Auch ist es blöd, das wenn man mit den Pfeilen bis zum Ende gescrollt hat und die Maus beispielsweise noch 10 Sekunden auf dem "Nach-Unten-Pfeil" lässt und im Anschluss auf den "Nach-Oben-Pfeil" geht, dann dauert es auch wirklich 10 Sekunden bis überhaupt wieder nach oben gescrollt wird. Sprich es wird "unsichtbar" weiter gescrollt, auch wenn nichts mehr da ist.

Ich hoffe ihr versteht mein Problem und könnt mir vielleicht helfen :)

Mit freundlichem Gruß
Basti
 
Was macht "scroll()"...eine solche JS-Methode ist mir bisher unbekannt.

Prinzipiell: verwende scrollBy()....da wird immer um einen bestimmten Wert gescrollt. Wo du dich in der Seite befindest, ist dabei schnuppe:)
 
Funktion Scroll() muss es aber geben, schließlich es - zumindestens im Firefox ;).

Nun, ich hab das mal wie folgt geändert:

Code:
<script type="text/javascript">
 <!--
 var anfang = 1;
 var speedup = 3;
 var speedwn = 3;
 
  function runter() {
  gutjetzt = setInterval("parent.frames.content.scrollBy(0,speedwn)",10);
  }
  
  function hoch() {
  gutjetzt = setInterval("parent.frames.content.scrollTo(0,speedup)",10);
  }
  
  function anhalten() {
  clearInterval(gutjetzt);
  }
 -->
 </script>
Im Firefox geht das runterscrollen nun immer noch und im IE immer noch nicht. Hochscrollen gar nicht, da wird einfach beim Mouseover an den Anfang der Seite gesprungen (sprich ohne Scrollen ist man einfach ganz oben).

Was muss ich wie ändern, damit das a) vernünftig scrollt (sprich egal wo man sich befindet, wie du es meintest) und das es auch im IE geht.

PS: Opera und Netscape reagiern genauso wie Firefox.

Danke :)
 
Ich habe einen horizontalen iframe-scroller. Hier ist der Code


Code:
  doloop = false; 
  
  function start_left() { 
  doloop = true; 
  scroll_left(); 
  } 

  function scroll_left() { 
  window.bilder.scrollBy(-3, 0);
  if(!doloop) return; 
  setTimeout("scroll_left()",1); 
  } 

  function start_right() { 
  doloop = true; 
  scroll_right(); 
  } 

  function scroll_right() { 
  window.bilder.scrollBy(3, 0);
  if(!doloop) return; 
  setTimeout("scroll_right()",1); 
  } 

  function stop() { 
  doloop = false; 
  }

so wird das script aufgerufen

Code:
<img src="bilder/left.gif" onMouseOver="start_left()" onMouseOut="stop()" width="15" height="30" border="0">
<img src="bilder/right.gif" onMouseOver="start_right()" onMouseOut="stop()" width="15" height="30" border="0">

Der Name des iframes ist bilder! (<iframe name="bilder" ...>)

Du kannst das script ohne probleme in einen vertikalen scroller umwandeln!
Das Script funktioniert im IE und FF.

Allerdings wüsste ich gerne, warum das Script im PC Opera und auf dem MAC
in IE und Safari NICHT funktioniert. Kann mir damit jemand helfen?
 
Zuletzt bearbeitet:
So, ich hab nochn bissl rumgesucht und jetzt zumindestens ein Skript gefunden was mir bei meinem 2. Problem abhilfe schafft. Nun kann ich auch ne halbe Stunde auf dem "Nach-unten-Pfeil" bleiben, der "nach-oben-Pfeil" reagiert sofort.

Nur geht es im IE immer noch nich.

Hier der neue Code

Code:
<script type="text/javascript">
 <!--
 var anfang = 1;
 var speedup = -3;
 var speedwn = 3;
 
  function runter() {
  gutjetzt = setInterval("window.content.scrollBy(0,speedwn)",10);
  }
  
  function hoch() {
  var y = 0;
   if (window.content.pageYOffset) {
 	y = window.content.pageYOffset;
   } else if (document.body && document.body.scrollTop) {
 	y = document.body.scrollTop;
   }
   while (y > 0) {
 	setTimeout("window.content.scrollBy(0, -1)", 50);
 	y = y - 1;
   }
  }
  
  function anhalten() {
  clearInterval(gutjetzt);
  }
 -->

Und das hochscrollen ist irgendwie ziemlich schnell (bald zu schnell). wie bekomme ich das langsamer? Ich hab schon 200 bei setTimeout probiert, aber das ändert nichts :(
 

Neue Beiträge

Zurück