Visualizzazione dei risultati da 1 a 5 su 5

Discussione: pageXOffset e Explorer

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    11

    pageXOffset e Explorer

    Salve a tutti, per un mio sito ho provato a fare una piccola funzione in js che faccia uno scrolling orizzontale morbido della pagina.
    Per capire in che posizione si trova la finestra uso la funzione pageXOffset che dovrebbe restituire la posizione.
    Tutto ok con firefox 2 e 3 ma con Expolrer 7 ho una brutta sorpresa, nel senso che non si ferma mai lo scorrimento e non capisco bene a cosa sia dovuto.

    Posto la funzione, è molto piccola
    function muovi(movimento)
    {
    x=x+60
    window.scrollBy(60,0)
    if (x >= movimento)
    clearInterval(sessione)
    }
    Ed ecco semplicemente l'evento che richiama la funzione con la definizione della variabile x
    onclick="x=window.pageXOffset;sessione=setInterval ('muovi(850,1)',7)"
    ovviamente x e sessione sono variabili globali... proprio non ci salto fuori. Forse pageXOffset non è riconosciuto?

    grazie mille per eventuali risposte
    duma

    p.s. il movimento vorrebbe essere una versione semplificata di questo http://www.rsbmedia.com/

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Fai una ricerca nel forum con "pageXOffset"

    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
    Jul 2008
    Messaggi
    11
    Grazie per la risposta, avevo già fatto una ricerca ma non sono molto esperto di javascript e non avevo capito alcune parti del codice.

    In ogni caso ho ancora un dubbio: ho notato che il comando che mi serve è
    var dsocleft=document.all? iebody.scrollLeft : pageXOffset
    però è anche necessaria la riga
    var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body
    ora io in ques'ultimo controllo non capisco bene il senso: posso direttamente mettere assegnare a iebody document.body?

    scusa per l'ignoranza ma non capisco bene a cosa serve questo confronto.

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Duma
    posso direttamente mettere assegnare a iebody document.body?
    potresti, ma devi sapere in che constesto ti trovi:
    IE6 e 7 in presenza di doctype valido (standards mode) riattribuiscono proprieta' del document.body a document.documentElement

    quindi se tu sai che il documento che fa riferimento allo script ha un doctype valido puoi anche parlare di documentElement senza preoccuparti

    troverai spesso questo fork perche' gli sviluppatori che scrivono codice riutilizzabile ovunque evitano cosi' che il documento finale invalidi lo script
    e si appoggiano ad una variabile perche' i metodi riattribuiti sono parecchi (scrollTop, clientHeight...) e probabilmente usati piu' di una volta nel corso dello script

    l' ultimo appunto, puoi evitare di appoggiarti al DOM per determinare se usare pageYOffset o scrollTop
    codice:
    var dsocleft=(window.pageXOffset)?window.pageYOffset:document.documentElement.scrollTop
    o appunto se non sai se il documento sara' in standards mode
    codice:
    var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body
    var dsocleft=(window.pageXOffset)?window.pageYOffset:iebody.scrollTop;
    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    11
    grazie a entrambi, molto gentili.

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.