Autoscrolling-Funktion auch horizontal möglich ?

FRitter

Erfahrenes Mitglied
Hallo an alle!

Ich setze folgendes JavaScript ein, um eine WebSite automatisch per Mausbewegung scrollen zu lassen - funktioniert soweit auch mit den meisten Browsern. Allerdings brauche ich das gleiche auch um in einem horizontalen Frame scrollen zu können. Leider ist es mir nicht gelungen, das Script dafür entsprechend abzuwandeln...

Vielleicht klappt es ja bei euch - schonmal danke für die Mühe !

PS: Für das Scrollen auf einer "gewöhnlichen" WebSite mit nur vertikalem Scrollbalken (also rechts) ist das Script nur zu empfehlen !

Code:
-------------------------------
HTMl-Site:
-------------------------------

[.....]

<BODY onload="autoscroll()">

[.....]

<script src="AutoScroll.js" language="JavaScript">
</script>

<script language="JavaScript">
<!--
function autoscroll() {}
function stopp_scrolling() {}
//-->
</script>

[.....]

-------------------------------
JS-Datei:
-------------------------------

<!--
// Parameter
var	sense1	= 10	// Sensibilitaetszone 1 (in %)
var	sense2	= 5	// Sensibilitaetszone 2 (in %)
var	speed1	= 1	// Scrollgeschwindigkeit in Zone 1
var	speed2	= 5	// Scrollgeschwindigkeit in Zone 2
var	stime	= 50	// Timer zum Scrollen

// Interne Variablen
var	scrolling	= false
var	scrollfast
var	richtung
var	y_mem	= -1
var	myWin

// Scrolling anhalten
function stopp_scrolling()
{
	scrolling	= false
	y_mem		= -1
}

// Scroll aktivieren und durchfuehren
function start_scrolling(initial)
{
	if(!scrolling)
		return

	// Dokumentposition ermitteln
	var	dy	= (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop
	if((y_mem != dy) && !initial)
		return
	var	dx	= (myWin.pageXOffset != null) ? myWin.pageXOffset : myWin.document.body.scrollLeft
	dy	+= richtung * (scrollfast ? speed2 : speed1)

	// Scrollen
	myWin.scrollTo(dx, dy)
	y_mem	= dy

	// Funktion erneut aufrufen
	setTimeout("start_scrolling(false)", stime)
}

// Auswertung der Mausposition
function zeige(e)
{
	// Mausposition und Dokumentdaten
	var	y	= myWin.Event ? e.pageY : myWin.event.clientY
	if(myWin.Event)
		y	-= - (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop
	var	wh	= myWin.innerHeight ? myWin.innerHeight : myWin.document.body.clientHeight
	var	dh	= myWin.document.height ? myWin.document.height : myWin.document.body.scrollHeight

	// Zwischenvariablen
	var	s1	= Math.round(wh * sense1 / 100)
	var	s2	= Math.round(wh * sense2 / 100)
	var	now_scroll

	// Scrollnotwendigkeit ermitteln
	if((y < s1) || (y > (wh - s1)))
	{
		now_scroll	= true
		richtung	= (y < s1) ? -1 : 1
		scrollfast	= ((y < s2) || (y > (wh - s2))) ? true : false
	}
	else
	{
		now_scroll	= false
		scrolling	= false
	}

	// Scrollstatus geaendert?
	if(now_scroll != scrolling)
	{
		y_mem	= -1
		scrolling	= now_scroll
		if(scrolling)
			start_scrolling(true)
	}
}

// Mauskontrolle initiieren
function autoscroll()
{
	myWin	= window

	if(myWin.Event)
		myWin.document.captureEvents(Event.MOUSEMOVE)

	myWin.document.onmousemove	= zeige
}

//-->

[Ende]
 
Man könnte es zwar besser schreiben, aber so auf die schnelle bleib ich beim urspünglichen script und verändere es nur. Im Prinzip muss man nur Y durch X austauchen und Hight durch Width:
HTML:
<html><head><title>Scrollscript-Forum</title></head>
   <body onload="autoscroll()">
   
   <script language="JavaScript"><!--
   // Parameter
   var sense1 = 10  // Sensibilitaetszone 1 (in %)
   var sense2 = 5	// Sensibilitaetszone 2 (in %)
   var speed1 = 5	// Scrollgeschwindigkeit in Zone 1
   var speed2 = 10  // Scrollgeschwindigkeit in Zone 2
   var stime = 50	// Timer zum Scrollen
   
   // Interne Variablen
   var scrollfast, richtung, myWin, x_mem = -1, scrolling = false;
   
   // Mauskontrolle initiieren
   function autoscroll()
   {
   	myWin = window
   	if (myWin.Event) myWin.document.captureEvents(Event.MOUSEMOVE)
   	myWin.document.onmousemove = zeige
   }
   
   // Auswertung der Mausposition
   function zeige(e) {
   	// Mausposition und Dokumentdaten
   	var x = myWin.Event ? e.pageX: myWin.event.clientX
 	if (myWin.Event) x += (myWind.pageXOffset != null) ? myWin.pageXOffset : myWin.document.body.scrollLeft
   	var ww = myWin.innerWidth ? myWin.innerWidth : document.body.offsetWidth
   
   	// Zwischenvariablen
   	var s1 = Math.round(ww * sense1 / 100)
   	var s2 = Math.round(ww * sense2 / 100)
   	var now_scroll
   
   	// Scrollnotwendigkeit ermitteln
   	if((x < s1) || (x > (ww - s1))) {
   		now_scroll = true
   		richtung = (x < s1) ? -1 : 1
   		scrollfast = ((x < s2) || (x > (ww - s2))) ? true : false
   	}
   	else {
   		now_scroll = false
   		scrolling = false
   	}
   
   	// Scrollstatus geaendert?
   	if(now_scroll != scrolling) {
   		x_mem = -1
   		scrolling = now_scroll
   		if(scrolling) start_scrolling(true)
   	}
   }
   
   // Scroll aktivieren und durchfuehren
   function start_scrolling(initial) {
   	if(!scrolling) return
   
   	// Dokumentposition ermitteln
   	var dy = (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop
   	var dx = (myWin.pageXOffset != null) ? myWin.pageXOffset : myWin.document.body.scrollLeft
   	if ((x_mem != dx) && !initial) return
   	dx += richtung * (scrollfast ? speed2 : speed1)
   
   	// Scrollen
   	myWin.scrollTo(dx, dy)
   	x_mem = dx
   
   	// Funktion erneut aufrufen
   	setTimeout("start_scrolling(false)", stime)
   }
   
   // Scrolling anhalten
   function stopp_scrolling()
   {
   	scrolling = false
   	x_mem = -1
   }
   //--></script>
   
 1.<br> 2.<br> 3.<br> 4.<br> 5.<br> 6.<br> 7.<br> 8.<br> 9.<br>10.<br>
 11.<br>12.<br>13.<br>14.<br>15.<br>16.<br>17.<br>18.<br>19.<br>20.<br>
 21.<br>22.<br>23.<br>24.<br>25.<br>26.<br>27.<br>28.<br>29.<br>30.<br>
 31.<br>32.<br>33.<br>34.<br>35.<br>36.<br>37.<br>38.<br>39.<br>40.<br>
 41.<br>42.<br>43.<br>44.<br>45.<br>46.<br>47.<br>48.<br>49.<br>50.<br>
 51.<br>52.<br>53.<br>54.<br>55.<br>56.<br>57.<br>58.<br>59.<br>60.<br>
 61.<br>62.<br>63.<br>64.<br>65.<br>66.<br>67.<br>68.<br>69.<br>70.<br>
 71.<br>72.<br>73.<br>74.<br>75.<br>76.<br>77.<br>78.<br>79.<br>80.<br>
 81.<br>82.<br>83.<br>84.<br>85.<br>86.<br>87.<br>88.<br>89.<br>90.<br>
 91.<br>92.<br>93.<br>94.<br>95.<br>96.<br>97.<br>98.<br>99.<br>100.<br>
   <div style="width:200%">.</div>
   
   </body>
Scrollt jetzt aber nur in x-Richtung, nicht mehr in y-Richtung. Es ist auch möglich beides gleichzeitig zu machen, dann wird das script aber um ca. 1/3 länger.
 
Zuletzt bearbeitet:
Hallo zurück und zugleich danke für die schnelle Antwort !

Jetzt funktioniert es in die gewünschte Richtung, so wie ich es benötige - danke! :p
 

Neue Beiträge

Zurück