Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    [CROSSBROWSER] posizione di un livello

    sto impazzendo..... devo semplicemente recuperare la posizione x e y di un layer div, solo in modo crossbrowser. Come si fa?? Ditemi la dicitura completa per i vari tipi di browser così me li segno

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    ci sono delle differenze a seconda che tu voglia recuperare le coordinate di un DIV
    a cui hai definito gli stili top/left (in uno stile)
    o se ne vuoi recuperare le coordinate a posteriori (
    senza aver definito precedentemente quegli stili).

    Nella libreria usiamo questo tipo di codice:

    codice:
    recuperaX = function(){return ((elemento.style.left) ? parseInt(elemento.style.left) : (elemento.offsetLeft||0);}
    recuperaY = function(){return ((elemento.style.top) ? parseInt(elemento.style.top) : (elemento.offsetTop || 0));}
    cioè in sostanza se lo style è stato definito, cerchiamo tra le proprietà di style,
    altrimenti cerchiamo in proprietà "particolari", perche non sono standard, come offsetLeft/Top,
    che però sono supportate da quasi tutti i browser moderni.

    Ora il codice non è esattamente questo, ma è per farti capire.
    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    quindi, io avendo il mio bel tag div:

    <div id="a" style="top: 0px; left: 0px; position: absolute;">aaa</div>

    per vedere ad esempio in un alert il valore di top dovrei fare così:

    alert(document.getElementByID('a').offsetTop);

    ??

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    in quel caso basta:

    alert(document.getElementByID('a').style.top);
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  5. #5
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    alert(document.getElementById('a').style.top)

    sotto netscape 7.02 non funge

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    sicuro?
    per conferma ho provato il codice su Mozilla 1.0 e Netscape 6.0 e mi ritorna il "0px".
    Ora non ho quella versione di NN, ma penso che funzioni...
    controlla meglio il codice.
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  7. #7
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    sono sicuro

    ho controllato su mozilla 1.4a e netscape 7.02

    ke palle js... non riesco mai a far funzionare qualcosa :quipy:

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    non è che lanci l'alert prima che il DIV sia stato caricato?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  9. #9
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Originariamente inviato da standard
    non è che lanci l'alert prima che il DIV sia stato caricato?
    oh mamma mia come sono fagiano

    eppure lo sapevo ke funzionava così, e sbattevo credendo ke sti browser avessero un modo tutto loro di gestirli.....

    grassie standard

    buona pasqua a tutti!

  10. #10
    standard, mi pare che ti sei scordato una parentesi!
    codice:
    recuperaX = function(){return ((elemento.style.left) ? parseInt(elemento.style.left) : (elemento.offsetLeft||0);}
    recuperaY = function(){return ((elemento.style.top) ? parseInt(elemento.style.top) : (elemento.offsetTop || 0));}
    in recuperaX manca una parentesi alla fine, o sbaglio?

    codice:
    recuperaX = function(){return ((elemento.style.left) ? parseInt(elemento.style.left) : (elemento.offsetLeft||0));}
    recuperaY = function(){return ((elemento.style.top) ? parseInt(elemento.style.top) : (elemento.offsetTop || 0));}
    Per questa volta passi...!
    Ciao belli!
    Luxx (°)
    Chi sa dica, chi non sa chieda.

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