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

    Disabilitare il JAVASCRIPT nel CSS...

    Salve a tutti

    Ho una pagina contenente un Javascript che mi fa apparire/scomparire alcuni elementi.
    Il classico tastino piu/meno che espande e nasconde un sottomenu.... nulla di fantascientifico!

    Il problema è che nel css per la stampa uno di questi elementi deve essere visibile (e dunque aperto) mentre nella pagina html normale deve partire da chiuso.

    Per una questione di accessibilità se uno non ha il JS attivato deve vedere tutti gli elementi aperti... dunque è il JS a chiuderli appena accedo alla pagina.

    PROBLEMA!!! Il css per la stampa tiene conto del JS e dunque il comando

    div.submenu {display:block}

    mi viene sovrascritto dallo script che me lo fa sparire.

    Come faccio? Come si disabilita il Javascript all'interno del css di stampa? Si può scrivere qualcosa tipo if "stampa" then "apri menu"?

    Grazie
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dal punto di vista del JS non saprei dirti.
    Forse ci vorrebbe quacosa del tipo (ma non conosco la sintassi esatta - dovresti chiederla nel forum JS)
    codice:
    if(document.getElementByTagName('style').getAttribute('media') == 'print' { ... }
    Invece per risolvere da un punto di vista "solo CSS", potresti provare a dare (anche) un id all'oggetto da nascondere, e definire il display:none all'id solo nel CSS media="print": il selettore dell'ID dovrebbe sovrascrivere quella della classe, e quindi il JS non agire in quel contesto.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Ora ci provo... il problema è che se io scrivo qualcosa tipo:

    <div class="submenu" id="questo">bla bla bla</div>

    il js diventa qualcosa tipo "nascondi elementi SUBMENU"

    e il css di stampa diventa div#questo {display:block;}

    Ma il problema è che il CSS viene letto prima del javascript... quindi sovrascrive
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Si`, ma cosa dici nel tuo JS?

    Ci sono varie possibilita`:
    (1) document.getElementById('questo').style.display = 'none';
    (2) document.getElementsByTagName('div')[0].style.display = 'none; [0]per il primo, [1] per il sec ...
    (3) document.[[individuazioneClasse]].[[aggiungiAttributo(display)]].[[aggiungiValore(none)]]
    (4) document.getElementById('questo').className = 'classenascosta';
    ...
    (come vedi non conosco la sintassi per il punto (3), ma credo che sia possibile)

    Ora le analizzo:
    (1) sovrascrive la proprieta` display
    (2) idem
    (3) dovrebbe essere meno prioritario del #questo, per cui potrebbe funzionare (ma potrebbe anche dipendere dal browser)
    (4) attribuisce una nuova classe ad un elemento: la classe "classenascosta" sara` poi definita a parte nel CSS - questo non dovrebbe sovrascrivere le caratteristiche definte nell'id
    (...) ci possono essere altre possibilita`: occorre valutare cosa effettivament conviene
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Sono arrivato ora in ufficio dunque dammi il beneficio di inventario... però credo che il problema possa essere il fatto che io uso Jquery e il comando $(element).hide() fa qualcosa di diverso dal normale "display:none" o "visibility:hidden", per questo quando da css li setto a mio piacimento non vengono sovrascritti...

    cmq ora faccio delle prove, casomai ci risentiamo.

    grazie per ora
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

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.