Ben: Scroll-Script

Hallo,

es ist wohl ein leidiges Thema, aber ich möchte es dennoch anschneiden.

Ich möchte einen normalen Frame mit Hilfe von zwei Grafiken in einem anderen Frame und nem JavaScript scrollen. Ich habe mir gedacht, dass ich das ganze über die window.scrollBy()-Funktion löse. Jedoch springt das Fenster derzeit einfach. Ich habe überlegt, das ganze mit einer for-Funktion zu lösen, doch auch da springt es.

Mir fehlt wohl irgendwie der Denkansatz. Könnte mir da vielleicht jemand einen Ansatz liefern?

Vielen Dank im Voraus,
Ben

  1. Ich möchte einen normalen Frame mit Hilfe von zwei Grafiken in einem anderen Frame und nem JavaScript scrollen.

    wie kann man in einen anderen frame scrollen???

    willst du die seite nur nach unten scrollen lassen????

    <script language="JavaScript1.2">
       top.window.moveTo(0,0);
       if (document.all) {
        top.window.resizeTo(screen.availWidth,screen.availHeight);
       } else if (document.layers||document.getElementById) {
        if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){
         top.window.outerHeight = screen.availHeight;
         top.window.outerWidth = screen.availWidth;
        }
       }

    var speed=1
       var currentpos=0,alt=1,curpos1=0,curpos2=-1
       function initialize(){
        startit()
       }
       function scrollwindow(){
        if (document.all)
         temp=document.body.scrollTop
        else
         temp=window.pageYOffset
        if (alt==0)
         alt=1
        else
         alt=0
        if (alt==0)
         curpos1=temp
        else
         curpos2=temp
        if (curpos1!=curpos2){
         if (document.all)
          currentpos=document.body.scrollTop+speed
         else
          currentpos=window.pageYOffset+speed
          window.scroll(0,currentpos)
        }
       }
       function startit(){
        setInterval("scrollwindow()",10)
       }
       window.onload=initialize
      </script>

    1. Hi Till,

      danke für deine Mühen, aber ich glaube, du hast mich falsch verstanden...

      Ich möchte einfach mit einem JavaScript den Inhalt eines Frames hoch- und runterscrollen können. Dies geschieht eben mit zwei Grafiken (Pfeil nach oben & Pfeil nach unten), die jedoch in einem anderen Frame sind. Das Ansprechen des Frames ist ja aber kein Problem. Das kann ich ja einfach mit parent.inhalt

      Ich habe dein Script nur überflogen, aber irgendwie scheint es nicht das zu bewirken, was ich erwartet habe, bzw. sieht es sehr kompliziert aus.

      Viele Grüße,
      Ben

      1. <div id="staticbuttons" style="position:absolute;">
        <a href="javascript:" onmouseover="myspeed=-thespeed" onmouseout="myspeed=0"><img
        src="arrows_up.gif" border="0"></a><br>
        <a href="javascript:" onmouseover="myspeed=thespeed" onmouseout="myspeed=0"><img
        src="arrows_dn.gif" border="0"></a>
        </div>

        <script>
        var Hoffset=70
        var Voffset=80
        var thespeed=3

        var ieNOTopera=document.all&&navigator.userAgent.indexOf("Opera")==-1
        var myspeed=0

        var ieHoffset_extra=document.all? 15 : 0
        var cross_obj=document.all? document.all.staticbuttons : document.getElementById? document.getElementById("staticbuttons") : document.staticbuttons

        function positionit(){
        var dsocleft=document.all? document.body.scrollLeft : pageXOffset
        var dsoctop=document.all? document.body.scrollTop : pageYOffset
        var window_width=ieNOTopera? document.body.clientWidth+ieHoffset_extra : window.innerWidth+ieHoffset_extra
        var window_height=ieNOTopera? document.body.clientHeight : window.innerHeight

        if (document.all||document.getElementById){
        cross_obj.style.left=parseInt(dsocleft)+parseInt(window_width)-Hoffset
        cross_obj.style.top=dsoctop+parseInt(window_height)-Voffset
        }
        else if (document.layers){
        cross_obj.left=dsocleft+window_width-Hoffset
        cross_obj.top=dsoctop+window_height-Voffset
        }
        }

        function scrollwindow(){
        window.scrollBy(0,myspeed)
        }

        function initializeIT(){
        positionit()
        if (myspeed!=0){
        scrollwindow()
        }
        }

        if (document.all||document.getElementById||document.layers)
        setInterval("initializeIT()",20)

        </script>

        1. Hi Till,

          danke, aber irgendwie steige ich da überhaupt nicht richtig durch.

          Ich hatte eher daran gedacht, dass ich irgend eine "kleine" Funktion habe, mit der ich (vielleicht in einer for-Schleife o.ä.) etwas ähnliches wie scrollBy aufrufe. Nur muss das ganze irgendwie mit setTimeout oder so etwas laufen, da ja der Scrollvorgang gesehen werden soll.

          Viele Grüße,
          Ben

          1. Hallo Ben,

            ja das geht auch ganz einfach: In den Header:

            function ScrollUp()
            { parent.MenuFrame.scrollBy(0,-1);
            }

            function StartScrollUp()
            { ScrollAction = window.setInterval("ScrollUp()", 10);
            }

            function ScrollDown()
            { parent.MenuFrame.scrollBy(0,1);
            }

            function StartScrollDown()
            { ScrollAction = window.setInterval("ScrollDown()", 10);
            }

            function StopScroll()
            { window.clearInterval(ScrollAction);
            }

            Und in den Body an geeigneter Stelle (z. B. in einer Tabelle):

            <td onMouseover="StartScrollDown()" onMouseout="StopScroll()"><img src="ArrowDn.gif"></td>
            <td onMouseover="StartScrollUp()"   onMouseout="StopScroll()"><img src="ArrowUp.gif"></td>

            Das funktioniert zwar so, ist aber natürlich noch nicht sehr professionell. Aber ich denke Du siehst, was passiert.

            Ciao
            Hans-Peter

            1. Ach so ja, habe ich vergessen: Eine globale Variable "ScrollAction" brauchts natürlich auch noch.

              Ciao
              Hans-Peter

              1. Hi Hans-Peter,

                vielen Dank. Das ist doch in den Grundzügen schon genau das, was ich wollte. :)

                Ein paar kleine Änderungen sind ja kein Problem mehr. Mir fehlte eben nur der Ansatz.

                Viele Grüße,
                Ben