Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513

    problema compatibilità script

    Ciao a tutti! In un sito mi ritrovo ad avere della pagine con due script, uno per far funzionare un menu a tendina in IE ed un'altro per una fotogallery. Inserisco gli script in questo modo:

    codice:
    <script type="text/javascript" src="iemenu.js"></script>
    <script type="text/javascript" src="gallery.js"></script>
    Il problema è che in questo caso, solamente lo script che inserisco per primo nell'ordine della pagina mi funziona, ed anche invertendo l'ordine degli script o inserendo il codice direttamente nella pagina il risultato non cambia. Gli script in questione son questi:

    codice:
    window.onload=function(){
    if(!document.getElementById || !document.getElementsByTagName) return;
    links=document.getElementById("galleria").getElementsByTagName("a");
    for(i=0;i<links.length;i++)
        links[i].onclick=function(){Show(this);return(false)}
    }
    
    function Show(obj){
    bigimg=document.getElementById("bigimage");
    bigimg.src=obj.getAttribute("href");
    smallimg=obj.getElementsByTagName("img")[0];
    t=document.getElementById("titolo");
    t.removeChild(t.lastChild);
    t.appendChild(document.createTextNode(smallimg.title));
    }
    codice:
    startList = function() {
    if (document.all&&document.getElementById) {
    navRoot = document.getElementById("nav");
    for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.nodeName=="LI") {
    node.onmouseover=function() {
    this.className+=" over";
    }
    node.onmouseout=function() {
    this.className=this.className.replace(" over", "");
    }
    }
    }
    }
    }
    window.onload=startList;
    Potete aiutarmi a farli convivere?? Grazie!!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Cambia la prima riga della prima funzione:

    // window.onload=function(){
    function pippopluto(){

    e l'ultima della seconda:

    // window.onload=startList;
    window.onload=function() {startList();pippopluto();}

    ovviamente solo se metti entrmbi gli script

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    Quindi, nelle pagine in cui continuo ad usare un solo script debbo continuare ad usar lo script originale, e crearne un'altro con le modifiche da te suggeritemi da usare nelle pagine ove ho anche lo script per la fotogallery?
    Grazie!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    in pratica, nelle pagine ove ho solamente il menu e nn la fotogallery, con queste modifiche lo script del menu cercherebbe di caricarmi anche il javascript della fotogallery, giusto?

    e se, siccome il primo script che inserisco è quello del menu (presente in tutte le pagine) dessi il nome pippopluto a lui e dicessi a quello della fotogallery di caricare anche esso? In questo modo, credo, nelle pagine ove c'è solamente il menu lo script ci sarebbe e si chiamerebbe pippopluto, e ove c'è anche la fotogallery lo script della fotogallery richiamerebbe anche lo script pippopluto...no?
    Forse sto dicendo scemenze...se non è cosi sapresti dirmi come realizzar ciò che ho detto?
    Grazie ancora!!

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Togli la riga

    window.onload=function() {startList();pippopluto();}

    dal secondo script e metti una riga personalizzata nella pagina... ovvero:

    window.onload=function() {startList();pippopluto();}
    se includi entrambi gli script

    window.onload=function() {startList();}
    se ne metti solo uno e... indovina tu cosa scrivere se vuoi solo l'altro

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    Scasami, ma io sono proprio a digiuno di javascript.
    Allora, io inserisco in tutte le pagine lo script:
    codice:
    startList = function() {
    if (document.all&&document.getElementById) {
    navRoot = document.getElementById("nav");
    for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.nodeName=="LI") {
    node.onmouseover=function() {
    this.className+=" over";
    }
    node.onmouseout=function() {
    this.className=this.className.replace(" over", "");
    }
    }
    }
    }
    }
    window.onload=startList;
    in questo modo:

    codice:
    <script type="text/javascript" src="iemenu.js"></script>
    mentre solamente in due pagine inserisco anche l'altro (sempre nella stessa maniera).
    Potresti dirmi che intendi con "Metti una riga personalizzata nella pagina?"
    Grazie mille e scusami per l'incapacità!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    E' un pò che provo, e per ora son arrivato a questa soluzione:

    Questo è il file iemenu.js, che inserisco in tutte le pagine cosi: <script type="text/javascript" src="iemenu.js"></script>

    codice:
    startList = function() {
    if (document.all&&document.getElementById) {
    navRoot = document.getElementById("nav");
    for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.nodeName=="LI") {
    node.onmouseover=function() {
    this.className+=" over";
    }
    node.onmouseout=function() {
    this.className=this.className.replace(" over", "");
    }
    }
    }
    }
    }
    window.onload=startList;
    Questo invece è gallery.js, che inserisco nelle pagine della fotogallery cosi: <script type="text/javascript" src="gallery.js"></script>

    codice:
    // window.onload=function(){
    function fotogalleria(){
    if(!document.getElementById || !document.getElementsByTagName) return;
    links=document.getElementById("galleria").getElementsByTagName("a");
    for(i=0;i<links.length;i++)
        links[i].onclick=function(){Show(this);return(false)}
    }
    
    function Show(obj){
    bigimg=document.getElementById("bigimage");
    bigimg.src=obj.getAttribute("href");
    smallimg=obj.getElementsByTagName("img")[0];
    t=document.getElementById("titolo");
    t.removeChild(t.lastChild);
    t.appendChild(document.createTextNode(smallimg.title));
    }
    window.onload=function() {startList();fotogalleria();}
    è vero che cosi ho due volte window.onload ecc ecc, però cosi con due soli file e senza inserir markup aggiuntivo e diverso da pagina a pagina sembra funzionare tutto!

    Che dite, può andare o sto facendo qualche scemenza??

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Funziona per una fortunata serie di coincidenze... ovvero tu metti il secondo script sempre insieme al primo... e la sua instruzione onload, che cosi' facendo sovrascrive la prima, viene eseguita e non da' errore perche' esiste anche il primo script... se tu includessi solo il secondo avresti un errore perche non viene trovata la function startList().

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    Si lo immaginavo...ma date le mie esigenze direi che cosi la cosa potrebbe andare...no?
    Altrimenti potrei lasciare la funzione che ho in tutte le pagine cosi:

    codice:
    startList = function() {
    if (document.all&&document.getElementById) {
    navRoot = document.getElementById("nav");
    for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.nodeName=="LI") {
    node.onmouseover=function() {
    this.className+=" over";
    }
    node.onmouseout=function() {
    this.className=this.className.replace(" over", "");
    }
    }
    }
    }
    }
    window.onload=startList;
    utilizzare lo script per la fotogallery cosi:

    codice:
    // window.onload=function(){
    function fotogalleria(){
    if(!document.getElementById || !document.getElementsByTagName) return;
    links=document.getElementById("galleria").getElementsByTagName("a");
    for(i=0;i<links.length;i++)
        links[i].onclick=function(){Show(this);return(false)}
    }
    
    function Show(obj){
    bigimg=document.getElementById("bigimage");
    bigimg.src=obj.getAttribute("href");
    smallimg=obj.getElementsByTagName("img")[0];
    t=document.getElementById("titolo");
    t.removeChild(t.lastChild);
    t.appendChild(document.createTextNode(smallimg.title));
    }
    window.onload=function() {fotogalleria();}
    ed infine linkare gli script in questa maniera:

    <script type="text/javascript" src="iemenu.js"></script>
    <script type="text/javascript" src="gallery.js"></script>
    <script type="text/javascript">window.onload=function() {startList();fotogalleria();}</script>

    Chiaramente soltanto nelle pagine ove uso entrambi gli script, mentre le altre resterebbero pulite.
    Dici che può andar bene?

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da matteo01
    Dici che può andar bene?
    Funzionare funziona... ma non ti posso garantire il superamento dei validatori w3c

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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.