Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
js per box scroller
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 01 Apr 2006 14:40    Oggetto: js per box scroller Rispondi citando

Dunque..ho necessità di ottenere che tre immagini banner linkabili possano "ruotare" succedendosi una dopo l'altra senza soluzione di continuità..

Ho trovato lo script seguente che permette di inserire testo formattato, immagini, link e sarebbe perfetto se non fosse che con IE funziona correttamente, con Firefox invece manco si vede !!

Qualcuno ha idea del perchè o di come correggerlo ?
O in alternativa conosce uno script equivalente che non dia problemi con FF ?


Lo script è piuttosto lungo, magari provate a copiarlo e creare una pagina htm per vedere si che si tratta
Ovviamente risulterà scarno perchè non allego il css che permette di settarne l'estetica.

Grazie in anticipo per eventuali suggerimenti !

Codice:

<div class="scroll" align=center>
                    <SCRIPT language=JavaScript1.2>

///////configure the below four variables to change the style of the slider///////
//set the scrollerwidth and scrollerheight to the width/height of the LARGEST image in your slideshow!
var scrollerwidth=153
var scrollerheight=171
var scrollerbgcolor=''
//3000 miliseconds=3 seconds
var pausebetweenimages=5000


//configure the below variable to change the images used in the slideshow. If you wish the images to be clickable, simply wrap the images with the appropriate <a> tag
var slideimages=new Array()

                     slideimages[0]='<p class=\'c\'><br>Testo di prova dello scroll:<br><br><b>Prova 1 2 3 Prova...</b> (<b>ok è una prova</b>) <br>provata <br><b>per fare<br></b> <b>un semplice esempio</b>.'
                     
                     
                     slideimages[1]='<br><p class=\'c\'>Peccato funzioni <b><span class=\'v\'>solo su IE</b></span> invece su FF <b><span class=\'r\'>NO</span></b>!<br><br><p class=\'c\'>Sapete come fare ? <br><img src=\'logobanner.gif\'><br><br></b> <b><span class=\'a\'>Speriamo che la soluzione si trovi! </span></b><a href=\'http://forum.zeusnews.com/viewtopic.php?t=15378\' target=\'_blank\'>link</a>'
                     
                     
                     slideimages[2]=slideimages[0]
                     slideimages[3]=slideimages[1]
                        

//extend this list

///////Do not edit pass this line///////////////////////
 

if (slideimages.length>1)
i=2
else
i=0

function move1(whichlayer){
tlayer=eval(whichlayer)
if (tlayer.top>0&&tlayer.top<=5){
tlayer.top=0
setTimeout("move1(tlayer)",pausebetweenimages)
setTimeout("move2(document.main.document.second)",pausebetweenimages)
return
}
if (tlayer.top>=tlayer.document.height*-1){
tlayer.top-=5
setTimeout("move1(tlayer)",1)
}
else{
tlayer.top=scrollerheight
tlayer.document.write(slideimages[i])
tlayer.document.close()
if (i==slideimages.length-1)
i=0
else
i++
}
}

function move2(whichlayer){
tlayer2=eval(whichlayer)
if (tlayer2.top>0&&tlayer2.top<=5){
tlayer2.top=0
setTimeout("move2(tlayer2)",pausebetweenimages)
setTimeout("move1(document.main.document.first)",pausebetweenimages)
return
}
if (tlayer2.top>=tlayer2.document.height*-1){
tlayer2.top-=5
setTimeout("move2(tlayer2)",1)
}
else{
tlayer2.top=scrollerheight
tlayer2.document.write(slideimages[i])
tlayer2.document.close()
if (i==slideimages.length-1)
i=0
else
i++
}
}

function move3(whichdiv){
tdiv=eval(whichdiv)
if (tdiv.style.pixelTop>0&&tdiv.style.pixelTop<=5){
tdiv.style.pixelTop=0
setTimeout("move3(tdiv)",pausebetweenimages)
setTimeout("move4(second2)",pausebetweenimages)
return
}
if (tdiv.style.pixelTop>=tdiv.offsetHeight*-1){
tdiv.style.pixelTop-=5
setTimeout("move3(tdiv)",1)
}
else{
tdiv.style.pixelTop=scrollerheight
tdiv.innerHTML=slideimages[i]
if (i==slideimages.length-1)
i=0
else
i++
}
}

function move4(whichdiv){
tdiv2=eval(whichdiv)
if (tdiv2.style.pixelTop>0&&tdiv2.style.pixelTop<=5){
tdiv2.style.pixelTop=0
setTimeout("move4(tdiv2)",pausebetweenimages)
setTimeout("move3(first2)",pausebetweenimages)
return
}
if (tdiv2.style.pixelTop>=tdiv2.offsetHeight*-1){
tdiv2.style.pixelTop-=5
setTimeout("move4(second2)",1)
}
else{
tdiv2.style.pixelTop=scrollerheight
tdiv2.innerHTML=slideimages[i]
if (i==slideimages.length-1)
i=0
else
i++
}
}

function startscroll(){
if (document.all){
move3(first2)
second2.style.top=scrollerheight
}
else if (document.layers){
document.main.visibility='show'
move1(document.main.document.first)
document.main.document.second.top=scrollerheight+5
document.main.document.second.visibility='show'
}
}






window.onload=startscroll


</SCRIPT>
                      <SCRIPT language=JavaScript1.2>
if (document.all){
document.writeln('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hiden;"  >')
document.writeln('<div style="position:absolute;width:'+scrollerwidth+';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0" onMouseOver="">')
document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">')
document.write(slideimages[0])
document.writeln('</div>')
document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:300">')
document.write(slideimages[1])
document.writeln('</div>')
document.writeln('</div>')
document.writeln('</span>')
}
</SCRIPT>
                   
                  </div>
Top
Profilo Invia messaggio privato
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 01 Apr 2006 21:56    Oggetto: Rispondi citando

Ho provato a metterci mano ma lo script in questione è pieno zeppo di inesattezze:
  • mancano tutti i puntievirgola alla fine di ogni riga
  • mancano parecchie dichiarazioni di variabile (i, tdiv, tlayer, etc.)
  • la parte finale dello script (document.writeln...) produce un codice HTML non corretto (elementi div all'interno di uno span)
  • sempre all'interno dell'ultima parte dello script, lo stile "overflow:hiden;" non esiste (semmai overflow: hidden;)

Tieni presente poi che il comportamento dei div in IE6 è completamente diverso da Firefox (o più semplicemente non segue affatto gli standard).
Infatti, se nel div iniziale imposti un bordo visibile (<div class="scroll" align="center" style="border: 1px solid #f00;">) potrai scoprire che in Firefox tale div ha altezza pari a zero.
Top
Profilo Invia messaggio privato HomePage
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 02 Apr 2006 13:23    Oggetto: Rispondi citando

eh lo so..
è uno script che ho trovato su un sito commerciale, evidentemente fatto su misura da qualche società/tecnico di mestiere..

l'effetto andava bene per i miei scopi per cui mi son guardato il codice e visto lo script in questione..

..accorgendomi che se su IE funziona correttamente, su FF manco se vede


Per cui mi son messo alla ricerca di qualcosa di alternativo che possa andare bene per le esigenze che devo soddisfare...tre immagini banner linkabili che scorrono ciclicamente, soffermandosi però su ciascuno per un certo tempo.
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 03 Apr 2006 09:51    Oggetto: Rispondi citando

Quanto conosci javascript?

Secondo me fai prima a riscriverti tu la funzione. Io ho una funzione per le news che fa più o meno quello che vuoi tu in 20 righe di codice. Prova a vedere se ti serve.

Codice:
var sitenewsindex;
var basesitenewsmsg;
var newsarray=new Array(3);

function initsitenews()
{
   sitenewsindex = 0;
   newsarray[0] = "<a class=\"news\" href=\"news.asp?id=221\"><strong>Titolo 1<\/strong> - <em>30 Marzo 2006<\/em><br \/><br \/>Testo della notizia 1 &hellip;<br /><em>(Notizia 1/3)<\/em><\/a>";
   newsarray[1] = "<a class=\"news\" href=\"news.asp?id=220\"><strong>Titolo 2<\/strong> - <em>28 Marzo 2006<\/em><br \/><br \/>Testo della notizia 2 &hellip;<br /><em>(Notizia 2/3)<\/em><\/a>";
   newsarray[2] = "<a class=\"news\" href=\"news.asp?id=219\"><strong>Titolo 3<\/strong> - <em>27 Marzo 2006<\/em><br \/><br \/>Testo della notizia 3 &hellip;<br /><em>(Notizia 3/3)<\/em><\/a>";

   sitenewsupdate();
}
function sitenewsupdate()
{
   if (document.getElementById) document.getElementById("snt").innerHTML = newsarray[sitenewsindex];
   sitenewsindex++;
   if (sitenewsindex==3) sitenewsindex=0;
   setTimeout("sitenewsupdate()",7000);
}


Io la creo dinamicamente (non so a priori quante news ci sono) ma tu puoi impostarla in maniera fissa, se invece ti serve la parte dinamica fammi sapere.
Top
Profilo Invia messaggio privato
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 03 Apr 2006 13:25    Oggetto: Rispondi

horus ha scritto:
Quanto conosci javascript?

ehm..poco poco..
diciamo che riesco a sbirciare e utilizzare codice che trovo....


horus ha scritto:
Io ho una funzione per le news che fa più o meno quello che vuoi tu in 20 righe di codice. Prova a vedere se ti serve.

ok, grazie..gli do uno sguardo....
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi