Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    Menu flottante: non funziona se dichiaro un DOCTYPE!

    L'effetto del menu flottante come descritto in un articolo di questo sito
    ( http://javascript.html.it/articoli/l...floating-menu/ )
    l'ho trovato molto utile nonché di discreto impatto estetico. Stavo già utilizzandolo in un paio di siti quando con dispiacere ho notato che se dichiaro un qualsiasi un DOCTYPE lo script smette di funzionare (in tutti i browser tranne che su Opera 8.54).
    Capirete il disappunto di un accanito fautore di XHTML strict.
    Forse chiedo un po' troppo, ma qualcuno conosce l'oscuro motivo di ciò e magari anche la soluzione?


  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    AP

  3. #3
    che doctype hai inserito? ce ne sono parecchi in questo modo non saprei come aiutarti
    Domenico Biancardi from http://www.halmadaxx.com

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Ci terrei a validare il documento con XHTML strict o almeno Transitional: inserendo uno o l'altro lo script cessa completamente di funzionare, eliminandoli (non dichiarando alcun DOCTYPE) riprende a funzionare.
    Ho notato che un paio di siti che usano questo script infatti non usano alcun DOCTYPE ma possibile che non esista alcun modo di salvaguardare gli standard?

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da usecram
    possibile che non esista alcun modo di salvaguardare gli standard?
    esiste eccome, purtoppo non sono sul mio pc e verificare passo passo lo script mi e' difficile
    potrebbe bastare semplicemente cambiare
    codice:
    ...
    else {h=".pixelLeft=";v=".pixelTop=";dS="";sD=".style";
    y="document.body.scrollTop";x="document.body.scrollLeft";}
    in
    codice:
    else {h=".pixelLeft=";v=".pixelTop=";dS="";sD=".style";
    y="document.documentElement.scrollTop";x="document.documentElement.scrollLeft";}
    perche', con IE, in presenza di doctype valido e completo alcune proprieta' del body vengono riassegnate a documentElement

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Mille grazie Xinod almeno adesso so quale è il problema: effettivamente sostituendo come hai detto e ripristinando il DOCTYPE su IE funziona perfettamente ma l'urlo di gioia viene smorzato dal fatto che su FF invece no.
    Probabile che occorra modificare ancora la struttura condizionale per una piena compatibilità dello script.
    Quando puoi se puoi ti sarei molto grato.
    Ovviamente lo farei io se mi intendessi di JS

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    AP

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Ricapitolando SOLO NON dichiarando il DOCTYPE lo script funziona sia su IE che su FF, dichiarando il DOCTYPE e modificando lo script come indicato da Xinod funziona solo su IE ma non su FF.
    Circa il 90% di utenti avrà il menu flottante, se qualcuno sa come fare per il restante 10% si faccia pure avanti.

  9. #9
    la soluzione individuata per IE funziona anche con FF solo che va utilizzato un piccolo accorgimento...

    mettiamo che recuperiamo il valore dello scroll con questa istruzione:

    ...
    myPageY=document.documentElement.scrollTop
    ...
    se utilizziamo il dato come avviene in molti script, accade che funziona solo su IE, vedi esempio

    ...
    document.getElementById("ammastellato").style.top= myPageY
    ...
    Se vogliamo far funzionare la cosa con FF dovremmo invece scrivere così

    ...
    document.getElementById("ammastellato").style.top= myPageY+'px'
    ...
    altrimenti FF non interpreta correttamente il valore assegnato all'attributo top...

    spero che questo vi sia utile...

    Ciao Michele

  10. #10
    Meglio ancora:
    codice:
    myPageY=document.documentElement.scrollTop||document.body.scrollTop;
    Inoltre consideriamo che sono pochi i Browser che considerano le misure prive di unità come pixel per cui aggiungiamo sempre +"px"

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.