12557: suche ein motion scroll skript *

Beitrag lesen

  
/*--------------------------------------------------------------------------  
 *  Smooth Scroller Script, version 1.0.1  
 *  (c) 2007 Dezinerfolio Inc. <midart@gmail.com>  
 *  
 *  For details, please check the website : http://dezinerfolio.com/  
 *  
/*--------------------------------------------------------------------------*/  
  
Scroller = {  
	// control the speed of the scroller.  
	// dont change it here directly, please use Scroller.speed=50;  
	speed:10,  
  
	// returns the Y position of the div  
	gy: function (d) {  
		gy = d.offsetTop  
		if (d.offsetParent) while (d = d.offsetParent) gy += d.offsetTop  
		return gy  
	},  
  
	// returns the current scroll position  
	scrollTop: function (){  
		body=document.body  
	    d=document.documentElement  
	    if (body && body.scrollTop) return body.scrollTop  
	    if (d && d.scrollTop) return d.scrollTop  
	    if (window.pageYOffset) return window.pageYOffset  
	    return 0  
	},  
  
	// attach an event for an element  
	// (element, type, function)  
	add: function(event, body, d) {  
	    if (event.addEventListener) return event.addEventListener(body, d,false)  
	    if (event.attachEvent) return event.attachEvent('on'+body, d)  
	},  
  
	// kill an event of an element  
	end: function(e){  
		if (window.event) {  
			window.event.cancelBubble = true  
			window.event.returnValue = false  
      		return;  
    	}  
	    if (e.preventDefault && e.stopPropagation) {  
	      e.preventDefault()  
	      e.stopPropagation()  
	    }  
	},  
	  
	// move the scroll bar to the particular div.  
	scroll: function(d){  
		i = window.innerHeight || document.documentElement.clientHeight;  
		h=document.body.scrollHeight;  
		a = Scroller.scrollTop()  
		if(d>a)  
			if(h-d>i)  
				a+=Math.ceil((d-a)/Scroller.speed)  
			else  
				a+=Math.ceil((d-a-(h-d))/Scroller.speed)  
		else  
			a = a+(d-a)/Scroller.speed;  
		window.scrollTo(0,a)  
	  	if(a==d || Scroller.offsetTop==a)clearInterval(Scroller.interval)  
	  	Scroller.offsetTop=a  
	},  
	// initializer that adds the renderer to the onload function of the window  
	init: function(){  
		Scroller.add(window,'load', Scroller.render)  
	},  
  
	// this method extracts all the anchors and validates then as # and attaches the events.  
	render: function(){  
		a = document.getElementsByTagName('a');  
		Scroller.end(this);  
		window.onscroll  
	    for (i=0;i<a.length;i++) {  
	      l = a[i];  
	      if(l.href && l.href.indexOf('#') != -1 && ((l.pathname==location.pathname) || ('/'+l.pathname==location.pathname)) ){  
	      	Scroller.add(l,'click',Scroller.end)  
	      		l.onclick = function(){  
	      			Scroller.end(this);  
		        	l=this.hash.substr(1);  
		        	 a = document.getElementsByTagName('a');  
				     for (i=0;i<a.length;i++) {  
				     	if(a[i].name == l){  
				     		clearInterval(Scroller.interval);  
				     		Scroller.interval=setInterval('Scroller.scroll('+Scroller.gy(a[i])+')',10);  
						}  
					}  
				}  
	      	}  
		}  
	}  
}  
// invoke the initializer of the scroller  
Scroller.init();  
  
  
/*------------------------------------------------------------  
 *						END OF CODE  
/*-----------------------------------------------------------*/

könnte man hier gegebenfall etwas ändern so das er nicht nur die #befehle benutzt sondern vielecht *befehle? ich hab das gefühl das die # kollidiert mit den area shape maps die auch mit raute bezeichnet wird. das ist mir gerade so eingefallen!