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

    CSS e JS: visualizzazione non corretta con Firefox

    Riprendo quanto iniziato qui, appurato che non si tratta di un problema di JS ma di CSS:

    http://forum.html.it/forum/showthrea...readid=1522211

    In sostanza, sto cercando di utilizzare qualche riga di Javascript per far cambiare classe ad un elemento del menu, incluso in tutte le pagine (via PHP), nel momento in cui sono in una pagina specifica, in maniera tale che lo stesso assuma una colorazione diversa in quel caso. Ho impostato la classe nuova (set1, quella di default si chiama set0) dal CSS con il relativo stile, e provato due soluzioni JS distinte (ma equivalenti).

    Tuttavia, mentre con Chromium il risultato è quello desiderato, con Firefox non lo è; dall'ispezione l'elemento risulta effettivamente della nuova classe set1, ma il suo colore non è quello impostato nel foglio di stile, anche se sembra leggermente diverso da quello di default.

    Riporto le due soluzioni e l'estratto del CSS:

    codice:
    <script type="text/javascript"> 
    document.getElementById("fps_xonotic.php").className = 
    document.getElementById("fps_xonotic.php").className.replace ( /(?:^|\s)set0(?!\S)/g , '' )
    document.getElementById('fps_xonotic.php').className += "set1";
    </script>
    codice:
    <script type="text/javascript">
    document.getElementById("fps_xonotic.php").className = "";
    document.getElementById("fps_xonotic.php").className = "set1";
    </script>
    codice:
    /* colorazione standard dei link */
    A:link {color: #FFFFCF;} A:visited {color: #FFFFCF;}
    A:active {color: #FFFFCF;} A:hover {color: #FFBF00;}
    
    /* colorazione dei link per la classe delle colonne */
    A.set0:link {color: #FFFFFF;} A.set0:visited {color: #FFFFFF;}
    A.set0:active {color: #FFFFFF;} A.set0:hover {color: #FFBF00;}
    
    /* colorazione dei link per la classe delle colonne, elemento in cui si e' */
    A.set1:link {color: #4040FF;} A.set1:visited {color: #4040FF;}
    A.set1:active {color: #4040FF;} A.set1:hover {color: #FFBF00;}
    Ho provato anche a sostituire gli ultimi due insiemi di dichiarazioni con:

    codice:
    .set0 a:link {color: #FFFFFF;}
    .set0 a:visited {color: #FFFFFF;}
    .set0 a:active {color: #FFFFFF;}
    .set0 a:hover {color: #FFBF00;}
    .set1 a:link {color: #4040FF;}
    .set1 a:visited {color: #4040FF;}
    .set1 a:active {color: #4040FF;}
    .set1 a:hover {color: #FFBF00;}
    ma non è cambiato niente.

    Da cosa può dipendere? Grazie in anticipo...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non dai il coidce HTML, per cui non si puo` sapere quale sia la sintassi corretta del CSS.

    Comunque nei CSS i nomi dei tag vanno scritti in minuscolo.
    Alcuni browser non riconoscono i tag maiuscoli (solo nel CSS; nell'HTML lo riconoscono, anche se le specifiche richiedono che i tag siano in minuscolo)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Come ho scritto di là, ho controllato la validazione W3C e dare ad id uno qualunque tra $titolo e $link (le righe della colonna di sinistra sono generate dalla seguente funzione PHP):

    Codice PHP:
    <?php function voce($testo$link) { // inizio funzione PHP che permette di rendere le voci nei menu
    return '<tr>
    <td class="Menu_1" background="layout/bg_menu_scritte.gif" height="21">
    [url="'
    $link .'"]'$testo .'[/url]</td>
    <td class="Menu_1" background="layout/bg_menu_scritte.gif" height="21">
    [img]layout/freccia_menu.gif[/img]</td>
    </tr>'
    ; } /* fine funzione PHP che permette di rendere le voci nei menu */ ?>
    dà un sacco di errori di forma, perché, sebbene il punto sia un carattere valido e non dia alcun errore, lo danno altri caratteri come gli spazi, gli slash, i punti interrogativi, i cancelletti, che comparirebbero inevitabilmente assegnando l'id in quel modo tramite la funzione PHP.
    A questo punto, prima di procedere con tutto il resto, mi conviene fare un overload della funzione stessa, e definirne una con lo stesso nome, dipendente però da tre argomenti anziché due, il terzo dei quali è proprio l'id; così, laddove lo voglia assegnare, potrò farlo, senza dover necessariamente andare a modificare tutte le occorrenze in cui uso quella funzione. Anche se non è così immediato, PHP non ammette l'overload diretto, e bisogna girarci un po' intorno per ottenere il risultato desiderato; a meno di, ci pensavo ancora stamattina, utilizzare qualcosa di un po' diverso, tipo f($testo) o f($link) dove f è un'opportuna funzione che rimuove i caratteri non accettabili sistemando le cose in tal senso, sulla quale comunque credo che bisognerebbe lavorare un po'.
    Per ora ho tirato via tutto: ho tolto l'attributo id da quella funzione PHP, messo sotto commento HTML il codice JS, lasciando attive soltanto le dichiarazioni relative alla classe set1 nel CSS, che però attualmente risulta non utilizzata.
    Nel caso mi rifaccio sentire, grazie intanto...

  4. #4
    Ho risposto di là, direi di continuare da quella parte visto che in realtà non si è ancora veramente capito se sia una questione di JS o di CSS.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.