Newsgroup: it.comp.lang.javascript
Titolo: script per scroller verticale

Ciao a tutti,
sto cercando uno script che mi faccia lo scroller verticale di un certo 
numero di notizie.
Ne ho trovati a centinaia in rete ma ancora nessuno che sia veramente 
cross-browser E che supporti il doctype.
Mi spiego meglio, ne ho trovati due che funzionano perfettamente sia su 
win (IE) che su linux (Mozilla) ma appena metto nella pagina
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
oppure	
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
non funzioano piu' ...
perche'? Qualcuno mi sa indicare dove reperire uno script free che 
funzioni bene?
ciao e buon week-end
Mauro

 perche'? 
Non avendo il codice sottomano, non posso dirtelo con precisione. Ma ti
posso dire un paio di "errori" comuni, o meglio di modifiche da fare per
migrare dal quirk mode (senza doctype, o con doctype errati) allo standard
mode (con doctype):
a) Spesso si fa riferimento a "document.body" in script del genere
(document.body.scrollHeight, document.body.offsetHeight, etc). Laddove
recupera delle misure, sostituisci "document.body" con
"document.documentElement".
b) Nel caso si imposti una misura, spesso veniva fatto senza la
corrispettiva unità (object.style.left=12, ad esempio). Ricordarsi di
impostarla (object.style.left="12px")
c) il clipping. In script del genere spesso si fa uso del clipping, e nei
vecchi script la sua sintassi è qualcosa tipo:
<style>
#mydiv{
	clip:rect(0, 120, 120, 0)
}
</style>
Per funzionare in standard mode, invece:
<style>
#mydiv{
	clip:rect(0 120px 120px 0)
}
</style>
(nota: nel caso il valore sia zero, l'unità di misura è facoltativa. Del
resto, zero è sempre zero).
Ovviamente questo si applica anche nell'impostare tale proprietà da script:
object.style.clip="rect(0 120px 120px 0)";
-- 
ZER0
~ .. six thousand and forty two days, three hours, seven minutes, fifty two seconds.
That is when the world ended.

 mode (con doctype):
Grazie mille, vedo se riesco a risolvere con questi suggerimenti.
ciao
Mauro

 mode (con doctype):
Uhm, io ho provato a sistemare le cose come mi hai detto, mancavano le 
unita' di misura e ho corretto ma non funziona lo stesso.
Se hai voglia di dare un occhiata lo script e' qua:
http://ingprj.diegm.uniud.it/mtb/scroller/
Adesso funziona perche' gli ho tolto il doctype. Uno degli errori che mi 
dava su mozilla con il doctype era una roba tipo "Too much recursion".
Magari sapresti indicarmi uno script con le stesse funzioni che sia 
veramente cross-browser (anche mac) anche a pagamento?
ciao e grazie ancora.
Mauro

 veramente cross-browser (anche mac) anche a pagamento?
Non ne conosco, mi spiace. Sicuramente se "googleggi" un poco, ne troverai
tantissimi.
Al volo, comunque, ti ho scritto questo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
	<title>Untitled</title>
	<style type="text/css">
		div#slider-container{
			position:relative;
			background:silver;
			width:120px;
			height:20px;
			overflow:hidden;
			font:11px tahoma;
			padding:4px;
			visibility:hidden;
		}
	</style>
</head>
<body>
<script type="text/javascript">
	function initSlider(id,timeout,offset){
		timeout=timeout||200;
		offset=offset||2;
 
		var running=false;
 
		if (!document.getElementById || !document.getElementsByTagName)
			return false;
 
		var el=	document.getElementById(id);
 
		if (el){
			var elContent=el.getElementsByTagName("div")[0];
			if (!elContent)
				return false;
 
			elContent.onmouseover=function(){
				running=false;
			}
			elContent.onmouseout=function(){
				running=true;
			}
 
			elContent.style.position="absolute";
			elContent.style.top=el.offsetHeight+"px";
			el.style.visibility="visible";
 
			setInterval(function(){
				if (running){
					if (elContent.offsetTop>-elContent.offsetHeight)				
						elContent.style.top=(elContent.offsetTop-offset)+"px";
					else
						elContent.style.top=el.offsetHeight+"px";
				}
 
			},timeout);
 
			running=true;
		}
	}
 
	window.onload=function(){
		initSlider("slider-container");
	}
</script>
<div id="slider-container">
	<div>
		Ehylà.<br />
		Sono una scritta che scorre.<br />
		<br />
		<a href="
http://www.google.it/
">google</a>
	</div>
</div>
</body>
</html>
Per i browser che supportano le DOM API (IE>=5, Firefox, Netscape, Mozilla,
Opera..)
-- 
ZER0
~ .. six thousand and forty two days, nine hours, forty two minutes, fifty six seconds.
