Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [js] una serie di fotine che "salta" in ie

    ciao

    ho questo menu fatto con uno js, scelto perche' crossbrowsing (e anche perche' ci piaceva ); se lo visualizzo con opera, nessun problema, se lo visualizzo con ie, ad un certo punto "salta": qualcuno sa spiegarmene la ragione?

    il codice:
    codice:
    var sliderwidth=750;
    
    var sliderheight=60;
    
    var slidespeed=1;
    
    slidebgcolor="#000000";
    
    var leftrightslide=new Array()
    var finalslide=''
    leftrightslide[0]='[img]images/menu/zeus_r.jpg[/img]'
    leftrightslide[1]='[img]images/menu/daniela_r.jpg[/img]'
    leftrightslide[2]='[img]images/menu/pinco_r.jpg[/img]'
    leftrightslide[3]='[img]images/menu/gigia_r.jpg[/img]'
    leftrightslide[4]='[img]images/menu/ego_r.jpg[/img]'
    leftrightslide[5]='[img]images/menu/reb_r.jpg[/img]'
    leftrightslide[6]='[img]images/menu/sverx_r.jpg[/img]'
    leftrightslide[7]='[img]images/menu/doc_r.jpg[/img]'
    leftrightslide[8]='[img]images/menu/iosoloio_r.jpg[/img]'
    leftrightslide[9]='[img]images/menu/king_r.jpg[/img]'
    leftrightslide[10]='[img]images/menu/tlc_r.jpg[/img]'
    leftrightslide[11]='[img]images/menu/nik_r.jpg[/img]'
    leftrightslide[12]='[img]images/menu/gateo_r.jpg[/img]'
    leftrightslide[13]='[img]images/menu/juzo_r.jpg[/img]'
    leftrightslide[13]='[img]images/menu/zapotex_r.jpg[/img]'
    
    var copyspeed=slidespeed
    leftrightslide='<nobr>'+leftrightslide.join(" ")+'</nobr>'
    var iedom=document.all||document.getElementById
    if (iedom)
    document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100;left:-3000">'+leftrightslide+'</span>')
    var actualwidth=''
    var cross_slide, ns_slide
    
    function fillup(){
    if (iedom){
    cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2
    cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3
    cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide
    actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth
    cross_slide2.style.left=actualwidth+20
    }
    else if (document.layers){
    ns_slide=document.ns_slidemenu.document.ns_slidemenu2
    ns_slide2=document.ns_slidemenu.document.ns_slidemenu3
    ns_slide.document.write(leftrightslide)
    ns_slide.document.close()
    actualwidth=ns_slide.document.width
    ns_slide2.left=actualwidth+20
    ns_slide2.document.write(leftrightslide)
    ns_slide2.document.close()
    }
    lefttime=setInterval("slideleft()",30)
    }
    window.onload=fillup
    
    function slideleft(){
    if (iedom){
    if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))
    cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed
    else
    cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+30
    
    if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))
    cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed
    else
    cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+30
    
    }
    else if (document.layers){
    if (ns_slide.left>(actualwidth*(-1)+8))
    ns_slide.left-=copyspeed
    else
    ns_slide.left=ns_slide2.left+actualwidth+30
    
    if (ns_slide2.left>(actualwidth*(-1)+8))
    ns_slide2.left-=copyspeed
    else
    ns_slide2.left=ns_slide.left+actualwidth+30
    }
    }
    
    
    if (iedom||document.layers){
    with (document){
    document.write('<table border="0" cellspacing="0" cellpadding="0" align="center"><td>')
    if (iedom){
    write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">')
    write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')
    write('<div id="test2" style="position:absolute;left:0;top:0"></div>')
    write('<div id="test3" style="position:absolute;left:-1000;top:0"></div>')
    write('</div></div>')
    }
    else if (document.layers){
    write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')
    write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
    write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
    write('</ilayer>')
    }
    document.write('</td></table>')
    }
    }
    e all'interno dei tag body semplicemente richiamato con
    codice:
    <script language="JavaScript1.2" src="script_menu.js" type="text/javascript"></script>
    grazie

    reb
    ===

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ciao Rebelia,
    prima di tutto occhio ai 3 errori che vengono notificati a fine caricamento, riguardano tutti l' altro script esterno (preload) che non ho aperto

    il problema sembra dipendere dall' html nel senso che da javascript fai scrivere una tabella con una cella centrata (mancano i <tr></tr>!) e explorer ti segue alla lettera per cui il livello in posizionamento relativo parte dal centro, mentre con altri browser la prima immagine si trova già al bordo sinistro a fine caricamento

    questo scarto fa scattare prima del necessario il primo blocco di immagini

    cambia <td align="center"> con <td align="left"> per rimediare al volo al problema

    se poi vuoi che con tutti i browser le immagini all' inizio entrino da destra ci sono modifiche + consistenti da applicare allo script

  3. #3
    ciao grancapo di settore, grazie per avermi letto

    l'altro script sn lavori in corso, probabilmente andra' a sparire del tutto (nn trovo un preload che riesca a far funzionare, dovro' cercare ancora, uff!), ma nn credo sia quello che interferisce con il funzionamento di questo, perche' gia' prima di postare qui avevo fatto un po' di prove senza, per scrupolo

    ho inserito il tag tr (js nn e' decisamente il mio campo: ne ho preso uno gia' fatto ed ho modificato sl la parte in alto, il resto nn l'ho neanche guardato ) ed ho modificato la riga indicata come segue:

    codice:
    document.write('<table border="0" cellspacing="0" cellpadding="0" align="left"><tr><td>')
    ma nn credo sia quello, visto che lo fa ancora

    quel che nn capisco e' come mai in opera funziona senza problemi

    se poi vuoi che con tutti i browser le immagini all' inizio entrino da destra ci sono modifiche + consistenti da applicare allo script
    nn necessariamente; l'importante e' che quando ho finito di caricare la prima fila, questa sfili a sx senza sparire del tutto esattamente come funziona in opera (sn reduce da una formattazione coatta e nn ho ancora caricato moz per vedere come lavora li')

    edit: altra prova: ho dato larghezza 100% alla tabella ed anche alla cella, ma nessun risultato

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    però non ho capito se hai provato a dare solo al td align="left" :master:

    document.write('<table border="0" cellspacing="0" cellpadding="0"><tr><td align="left">')

    così a me si sistema, appare precisamente come in opera/moz

    per il preload
    precarica_esterno.js mi sembra faccia il suo dovere,
    chiaramente togliendo quel | prima di function precaricaImmagini()

  5. #5
    grazie mille per l'aiuto; ho sistemato come mi hai consigliato ed inoltre ho cambiato questo parametro:
    codice:
    write('<div id="test3" style="position:absolute;left:-1000;top:0"></div>')
    aggiungendo uno zero extra (mi pareva che potesse essere utile )

    inoltre il preload l'ho tolto, perche' un amico mi ha modificato l'altro js presente (la barra era una svista: quando mi fossi occupata del problema, ci avrei perso ore e ore sicuramente, a trovare l'inghippo, per cui la tua segnalazione mi e' stata sicuramente utile, visto che lo metto da parte per la prossima volta )

    grazie ancora, alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.