Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    DOCTYPE: problemi interpretazione codice

    Mi sono archiviato tempo fa, utilizzando Visual Studio, del codice javascript per ripristinare la posizione y della pagina nei varii refresh.

    Ho archiviato adesso la stessa pagina, prima funzionante perfettamente, utilizzando questa volta la nuova versione di Visual Studio. La pagina funzione perfettamente con Firefox, ma non con IE6 :master:

    Visto che il codice, server e client è lo stesso, ho capito e verificato, che il problema è nel DOCTYPE, messo dal programma, diverso nei due casi.

    Allora, ho un hidden di id p_posizione_y che, al submit, viene valorizzato con:

    codice:
    <input type="submit" name="ctl0" value="SUBMIT" onclick="document.Form1.p_posizione_y.value = document.all ? document.body.scrollTop: window.pageYOffset;" />
    nell'evento onsubmit del form metto un punto di controllo:
    codice:
    function Form1_onsubmit() 
    {
        alert(document.getElementById("p_posizione_y").value);
    }
    adesso, con:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    funziona perfettamente, mentre, con:
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    l'alert di prima di dà sempre 0

    Domanda:
    Potreste spiegare bene i due DOCTYPE oppure cosa c'è di sbagliato nel codice?

    Pietro

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ciao Pietro
    http://www.quirksmode.org/js/doctypes.html
    quando il doctype e' assente, incompleto o completamente non standard IE si comporta alla vecchia maniera, il body ha le proprieta' che siamo abituati ad attenderci:
    offsetHeight, scrollTop, clientWidth...
    quando IE6 e' in strict mode queste proprieta' vengono riassegnate a documentElement

    occhio che, prima di inveire contro IE (almeno, solo per questo), anche mozilla fa una cosa simile,
    solo che mozilla accetta anche proprieta' che erano del vecchio NN4, x cui non ci si rende conto delle differenze a seconda del doctype

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio davvero della risposta.

    Non h letto bene l'articolo suggerito (ottimo sito davvero).
    Se ti va ti prego di dare una occhiata a questo codice: sembra che vada, ma non mi piace il document.all

    codice:
    function GetScrollY()
    {
        
        if(document.all)
        {
            if (document.documentElement && document.documentElement.scrollTop) 
            {
                return document.documentElement.scrollTop;
            }
            else if (document.body) 
            {
                return document.body.scrollTop;
            }
            
        }
        else
        {
            return window.pageYOffset;
        }
        
    }
    Pietro

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non dovrebbero esservi controindicazioni, dal momento che successivamente controlli che esista anche la proprieta' document.documentElement.scrollTop
    ma non piace troppo neanche a me

    come nell' articolo, potresti evitare l 'annidamento di condizioni e lasciare solo
    codice:
    if (document.documentElement && document.documentElement.scrollTop){
      return document.documentElement.scrollTop;
    }
    else if (document.body) {
      return document.body.scrollTop;
    }
    else return window.pageYOffset;

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Bene, ti ringrazio

    Alla prossima domanda (e risposta )
    Pietro

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.