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

    conflitto fa due script

    Salve a tutti. Ho un problema con due script che non coesistono nella stessa pagina.

    Il primo script serve per intercettare una classe e far aprire il link in una nuova finestra; il codice è questo:

    codice:
    function intercetta() { 
        for (var i=0; i<document.links.length; i++)
            if (document.links[i].className=="blank") {
                document.links[i].target="_blank";
            } 
    }
    window.onload = intercetta;
    mentre il secondo è uno script che permette di avere delle slide di immagini e per ogli immagine avere un link; questo è il codice:

    codice:
    var slideshow_width='350px'
    var slideshow_height='260px'
    var pause=3000
    var slidebgcolor="#ffffff"
    
    var dropimages=new Array()
    dropimages[0]="img/slide/image001.jpg"
    dropimages[1]="img/slide/image1000.jpg"
    
    var droplinks=new Array()
    droplinks[0]="http://www.miodominio.it"
    droplinks[1]="http://www.miodominio.it"
    
    var preloadedimages=new Array()
    for (p=0;p<dropimages.length;p++){
    preloadedimages[p]=new Image()
    preloadedimages[p].src=dropimages[p]
    }
    
    var ie4=document.all
    var dom=document.getElementById
    
    if (ie4||dom)
    document.write('<div style="position:relative;width:'+slideshow_width+';height:'+slideshow_height+';overflow:hidden"><div id="canvas0" style="position:absolute;width:'+slideshow_width+';height:'+slideshow_height+';background-color:'+slidebgcolor+';left:-'+slideshow_width+'"></div><div id="canvas1" style="position:absolute;width:'+slideshow_width+';height:'+slideshow_height+';background-color:'+slidebgcolor+';left:-'+slideshow_width+'"></div></div>')
    else
    document.write('[img]'+dropimages[0]+'[/img]')
    
    var curpos=parseInt(slideshow_width)*(-1)
    var degree=10
    var curcanvas="canvas0"
    var curimageindex=linkindex=0
    var nextimageindex=1
    
    
    function movepic(){
    if (curpos<0){
    curpos=Math.min(curpos+degree,0)
    tempobj.style.left=curpos+"px"
    }
    else{
    
    clearInterval(dropslide)
    nextcanvas=(curcanvas=="canvas0")? "canvas0" : "canvas1"
    tempobj=ie4? eval("document.all."+nextcanvas) : document.getElementById(nextcanvas)
    var slideimage='[img]'+dropimages[curimageindex]+'[/img]'
    tempobj.innerHTML=(droplinks[curimageindex]!="")? ''+slideimage+'' : slideimage
    nextimageindex=(nextimageindex<dropimages.length-1)? nextimageindex+1 : 0
    setTimeout("rotateimage()",pause)
    }
    }
    
    function rotateimage(){
    if (ie4||dom){
    resetit(curcanvas)
    var crossobj=tempobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
    crossobj.style.zIndex++
    var temp='setInterval("movepic()",50)'
    dropslide=eval(temp)
    curcanvas=(curcanvas=="canvas0")? "canvas1" : "canvas0"
    }
    else
    document.images.defaultslide.src=dropimages[curimageindex]
    linkindex=curimageindex
    curimageindex=(curimageindex<dropimages.length-1)? curimageindex+1 : 0
    }
    
    function rotatelink(){
    if (droplinks[linkindex]!="")
    window.location=droplinks[linkindex]
    }
    
    function resetit(what){
    curpos=parseInt(slideshow_width)*(-1)
    var crossobj=ie4? eval("document.all."+what) : document.getElementById(what)
    crossobj.style.left=curpos+"px"
    }
    
    function startit(){
    var crossobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
    crossobj.innerHTML='[img]'+dropimages[curimageindex]+'[/img]'
    rotateimage()
    }
    
    if (ie4||dom)
    window.onload=startit
    else
    setInterval("rotateimage()",pause)
    Qualcuno mi saprebbe dire cosali manda in conflitto?!!

    Grazie ... ciao

  2. #2
    il problema dovrebbe essere che window.onload è una proprietà, e come tale se fai:
    window.onload=funzione1;
    window.onload=funzione2;

    la seconda istruzione sovrascrive la prima, cioè funzione2 verrà eseguita e funzione1 verrà persa.

    Per rimediare puoi fare:
    window.onload=function(){funzione1(); funzione2();}

    Questo è il problema che ha portato all'abbandono(in teoria,perchè in pratica è ancora molto usata) della proprietà onload in favore di una gestione migliore degli eventi tramite il metodo standard W3C addEventListener(), il quale però non è supportato (ma guarda un po'...) da Internet Explorer, che invece usa il metodo proprietario attachEvent().

  3. #3

    mille grazie!!

    Grazie per la risposta.. ho appena apportato le modifiche che mi hai suggerito e tutto funziona regolarmente!!

    Grazie ancora!!

  4. #4
    di niente

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.