Newsgroup: it.comp.lang.javascript
Titolo: Coordinate di un oggetto nello schermo

Ciao a tutti,
avrei bisogno di recuperare le coordinate di un oggetto (link) nell
schermo, considerando che l'oggetto stesso si trova dentro una tabella
che si adatta alla larghezza della finestra.
In pratica: il link e' centrato nella tabella e, ovviamente,
ridimensionando la tabella, rimane al centro ma si distacca maggiormente
dal bordo sinistro.
E' possibile recuperare la nuova posizione in qualche modo?
-- 
Mr. Fix @ work

 che si adatta alla larghezza della finestra.
E' un gran bel casino, devi fare una funzione ricorsiva che, partendo
dall'elemento incriminato, sommi la distanza che ha tra lui ed l'oggetto
padre, e cosi' via a risalire fino all'elemento principale; tenendo conto
di eventuali fattori come margini o altro.
Quindi ti rigiro la domanda: per quale motivo ti serve una cosa del genere?
-- 
ZER0://coder.gfxer.web-designer/
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)
bofh ~ "Discrepanza bastarda tra il cluster SSH Alpha basato su AIX 3.9 e
la temperatura della scheda di rete PCI." (polygen)

 Quindi ti rigiro la domanda: per quale motivo ti serve una cosa del genere?
Sto realizzando un sitarello e sto cercando di applicare soluzioni il
piu' avanzato possibile.
Il layout e' interamente realizzato via css (neanche una tabella...
^_^) ed ho dei link attivi su tre lati del box (centrato orizzontalmente
nella finestra) dai quali vorrei far scaturire un menu' a tendina.
Ho trovato un menu in giro per la rete e l'ho modificato secondo le mie
esigenze, pero', per come e' progettato, compare in una posizione
assoluta, predefinita. Quindi, ingrandendo la finestra, il box si sposta
e il menu' pop-up si sfasa.
Potrei agganciare il box al lato sinistro dello schermo ma non e' una
soluzione che mi piaccia molto.
Speravo che via javascript si potesse recuperare la posizione
(coordinate) nello schermo di un oggetto qualsiasi (ad es uno dei link)
ed aggiornare di conseguenza la coordinata da passare al menu...
Alla peggio potrei costringere le dimensioni della finestra e/o aprire
un pop-up col box all'interno, ma speravo di trovare una soluzione per
rimanere nella stessa pagina...


 (coordinate) nello schermo di un oggetto qualsiasi 
Recuperi le coordinate di un oggetto qualsiasi *relativamente* al padre di
tale oggetto, a meno che - ovviamente - quest'oggetto non sia posizionato
in modo assoluto.
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)
bofh ~ "I bambini della scolaresca in visita hanno rotto il clock dei
dischi EIDE" (polygen)

 in modo assoluto.
Uhm... Non capisco...
Scrivo al volo un esempio semplificato:
<html>
<head><title>prova</title></head>
<body>
<table align="center> width="80%"><tr><td align="center"><a
href="pippo.html>link</a></td></tr></table>
</body>
</html>
Ridimensionando la finestra si ridimensiona la tabella e il link si
sposta in orizzontale.
Chi e' il padre di <a>? document? window? E come recupero le coordinate
di <a>?
-- 
Mr. Fix @ home

 E come recupero le coordinate di <a>?
Recuperando le coordinate di A in base al genitore TD, alle quali devi
sommarci le coordinate del genitore di TD, che e' TR, alle quali a sua
volta devi sommarci le coordinate del genitore di TR che e' TBODY (che tu
non hai inserito, ma che a livello di codice il browser te lo mette cmq,
quindi faresti bene a metterlo anche tu), alle quali a sua volta devi
sommarci le coordinate del genitore di TBODY che e' TABLE, alle quali a sua
volta devi sommarci le coordinate del genitore di TABLE che e' BODY, alle
quali a sua volta devi sommarci le coordinate del genitore di BODY che e'
HTML.
Per questo ti ho detto di fare, eventualmente, una funzione ricorsiva ^_^"
Nota bene: Per "coordinate" non intendo solo left e top, ma anche tutte le
misure che possono influire: margini, padding e compagnia bella.
-- 
ZER0://coder.gfxer.web-designer/
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)
bofh ~ "I tizi delle pulizie hanno messo le mani su il client NNTP MIPS a
32 bit" (polygen)
on air ~ "raf in tutti i miei giorni"

 32 bit" (polygen)
^_^;;;;;; cosa sono tutte queste citazioni???
--
public ArtemisAlpeia() {};
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Per questo ti ho detto di fare, eventualmente, una funzione ricorsiva ^_^
Ach... La vedo complicata... Temo che accettero' il primo
suggerimento...  ^_^



No, ti sbagli. E' meno complicato di quello che sembra.
con una funzione ricorsiva scrivi codice pulito e ti basta processare il
nodo, recuperare il riferimento al nodo padre e richiamare la funzione sul
padre. Un poco di lavoro in piu' all'inizio e nessun lavoro in seguito
--
final static Artemis alpeia;


 padre. Un poco di lavoro in piu' all'inizio e nessun lavoro in seguito
Uhm... Il problema e' che sono piuttosto niubbo e non vado molto oltre
le operazioni di base (pop-up, rollover, timer...).
Ho acquistato da poco la guida Javascript 1.5 della Apogeo ma sto
studiando altre cose (java, principalmente) e non ho molto tempo.
Se hai tempo e voglia di darmi qualche dritta che mi permetta di
incamminarmi per la strada giusta saro' ben felice di spulciarmi la
guida per andare piu' a fondo...  ^_^


 guida per andare piu' a fondo... ^_^
ti do una dritta:
function getAbsLeft(element)
{
   var width;
   if (!element.offsetParent)
      return 0;
   with (element)
   {
      width = offsetLeft + getAbsLeft(offsetParent);
   }
   return width;
}
--
/^artemis\.alpeia$/gi


 ti do una dritta: [...]
Uhm... Ti ringrazio, mi pare molto interessante (ad es. l'utilizzo di
"with" non lo conoscevo...  ^_^
Ho fatto una prova veloce e vedo che offsetLeft mi riporta 3 valori (nel
caso di un link dentro una tabella <table><tr><td><a href...), che,
immagino, rappresentino lo sfasamento in pixel risalendo la china...
Appena ho un attimo me lo studio un po' meglio e vedo di cavarne
qualcosa; per ora grazie mille!  : )


 ^_^;;;;;; cosa sono tutte queste citazioni???
Non dovevi chiederlo..
AVVERTENZA : Questo messaggio potrebbe contenere parole non adatte a minori
o a persone sensibili. Non e' colpa mia, ma del polygen ^_^"
E' il polygen. Di suo e' un programma quasi serio. 
Citando il sito:
"Il Polygen è un programma che genera frasi casuali secondo una definizione
grammaticale, ovvero seguendo un corpus programmabile di regole sintattiche
e lessicali.
Formalmente è un interprete di un metalinguaggio che permette di definire
linguaggi.
Interpretare, in generale, significa eseguire un programma ed infine
riportarne il risultato; nel caso del Polygen il programma è una grammatica
sorgente, l'esecuzione consiste nell'esplorazione di tale grammatica lungo
un percorso casuale ed il risultato consiste in una frase.
Sebbene il Polygen sia quindi un programma abbastanza serio, in quale
maniera più nobile potrebbe essere utilizzato se non come strumento di
parodia di abitudini, stereotipi e trend di questa disgraziata epoca?
 
I princìpi della parodia sono, prima, mettere a fuoco una tematica
ridicola, poi, astrarne regole e schemi (nella fattispecie in termini di
una definizione grammaticale) tramite i quali riprodurla attraverso lo
strumento della variazione.
E la casualità è perfetta a questo scopo grazie al suo comportamento
imprevedibile e asemantico."
 
Io non ho fatto altro che implementare il polygen nel newsreader che uso.
:)
Attualmente quel che leggi e' la grammatica BOFH: Bastard Operator From
Hell Excuses. Ma ce ne sono a pacchi.. Ad esempio (tutte sono generate
casualmente secondo la loro grammatica):
.. la lista e' lunga.. :P
Microsoft payoff:
- Who are you going to seem like tomorrow?
- How would we do today?
- What am I tonight?
- How are you?
Professionisti:
- Geom. Enrico Zeffiro - Product Java Technological Architect
- Segr. Segr. Giorgia Giorgiola - Distinguished Mid-level Management
Extranet Administrator
- Prof. Giulio Marcon - Grandmaster MPeG Development Director
- Morgia Morzola - Wap Office Evangelist
Manager:
- Potremo definire il design di Database per lo sviluppo di AI.
- Potremmo surclassare lo sviluppo di Net-surfing per minimizzare lo
sviluppo di ambienti.
- 
Genio:
- Non riesco a far partire iMacOS X da Outlook 7.8.2 o dal pannello di
Redhat LinuxPPC, come si fa?
Puoi aprire iMacOS X dal menu Strumenti di Internet Explorer XP e poi non
devi mai debuggare Excel NT da X-Windows 7.7, ma appunto devi attaccare un
menu del pin della barra spazio del front-end di una applicazione POP3 per
fare telnet su un hardware.
- Come posso fare per accendere la motherboard CD RAM del proxy di una
scheda grafica?
Il fatto e' che da ICQ 96 praticamente puoi spegnere la directory di una
login ROM del floppy disk.
Ai Poster l'Ardua sentenza:
- Un obbiettivo concreto: meno Helder per me.
- Un obbiettivo mantenuto: sicurezza, non patente a punti.
- Non dimenticata una soluzione: meno pugnette per tutti.
Cocktail:
- Tequila Julep - Assenzio, Triple sec, Succo di pera e Foglie di menta
- Yellow Daiquiri - Bitter, Coca Cola, Succo di mela e Zucchero di canna
Epigrafi medievali:
- Gottacchio da San Miniato, l'uccellatore, fu costumato.
- Gulbucchio di Pologna, il taverniere, era solito esser servizievole.
Grandeur:
- Maternite', Pret-a-porter, S'il vous plait!
- Immortalite', Chardonnaix, Petit pate'!
Proverbi:
- A elefante donato non si guarda la carotide.
- Il mantello del vicino e' sempre piu' blu.
- Viola di mattina, bel tempo si spera.
- Chi la ha la sferri.
Antani:
Supercazzola come fosse a fianco tarataratapioca, avendo paragonato un
tapiro con antani ratablinda che antani sbrodolava blinda attualmente
taratatablinda supercazzola prematurata, un piccione blinda gioisce
attualmente bradipo mucca, nel senso omoteleutico, supercazzola prematurata
fanculizza palle racconta storie ovviamente tapiro palle. Sbidiguli come
fosse sopra antani...
B-film:
- Vacanze di ognissanti '85
- Pallottole e tulipani
- Tutti contro Cleopatra e Ali' Baba' VI
Beautiful:
Episodio n. 19702
Taylor e Eric jr vogliono dare vita ad una nuova progenie. Nel frattempo
Thorne riesce a convincere Thorne a dirgli cosa e' successo tra lui e
Ridge, inoltre Megan tradisce Sally con Bridget. Contemporaneamente va a
letto con Sally, mentre Sally Spectra cerca di carpire il segreto di Macy a
Sally Spectra.
- Episodio n. 41310
Bridget e Eric vanno in vacanza a Battipaglia, proprio quando Darla e Whip
si sposano, cosi' Brooke ritorna dalle vacanze a Bassano del grappa. Il
giorno seguente cerca di sedurre C.J., il quale spara a Whip. In seguito va
da Macy a convincerla di lasciar stare Eric jr. Inaspettatamente passa la
notte da Whip, dopo che Lorenzo e Kristen chiamano il figlio Rick jr, dopo
che il piccolo Freedom ha gia' 50 anni.
Boyband:
- Kidzone
- This to Boys
- Take Eight
Metal:
- Legacy of Beast - Silver in the house of doom
- Metallica Dissection - In the hills of Hell
- Necrogod - The victory of cunts
Alla fiera dell'est:
Alla fiera dell'est
per tre soldi
un ermellino mio padre compro'.
E venne il marpione
che cago' il gelato
che si mangio' il rospo
che respinse il cuoco
che compro' il marcio
che si sfondro' il cuoco
che cago' il rospo
che brucio' l'oro
che uccise il rospo
che inculo' l'oro
che cambio' il cuoco
che al mercato mio padre rubo'.	
 
Pizzul:
Dopo il brutto fallo da dietro su Scamuorz (e` tedesco), si riparte con la
punizione; batte Stivetto, che lancia lungo per Duilio... ecco... crossa la
palla a Baroni... traversa! E` una vera sfortuna per la squadra!!! Il
numero 7 recupera palla in difesa... parte verso il centro, si invola sulla
fascia e poi tira in porta... e viene atterrato da Ciccio... Veramente una
bruttissima entrata... Si riparte da centrocampo. Di Giovanni passa a
Sempronio... calcia una bomba verso il portiere direttamente da dove si
trova... ed e` a lato di poco! Ma come ha fatto a sbagliare quel tiro???
Annunci:
- Pensionato rumeno, fisico asciutto, offre manganello nero per esperimenti
gravitazione universale
- Ruttatore barese cerca interessante incarico come betoniera e amante
fisting vaginale scopo esorcismo. Astenersi HIV negativo.
- Focomelico boscaiolo, amante pratiche sadomaso multicinghia, offre
cucciolo tipo Bambi scopo amicizia senza fine.
-- 
ZER0://coder.gfxer.web-designer/
~ Ci siamo fatti una scopata cosi' eccezionale che anche i vicini hanno
fumato una sigaretta.
bofh ~ "E` venuta a prodursi una interferenza terribile tra le correnti
implementazioni della sedia bianca e la temperatura della scheda ISA di
rete." (polygen)


 Ach... La vedo complicata... 
No, non lo e' molto. Il fatto e' che potrebbe essere semplicemente inutile
per cio' che devi fare tu. Le funzioni ricorsive usano molte risorse, e poi
devi interare un numero imprecisato di nodi. Quindi, se questo genere di
operazioni si possono evitare, e' meglio.
L'unica complicazione, come ti ho detto, puo' essere relativa a come i vari
browser possono trattare il box model o meno..
-- 
ZER0://coder.gfxer.web-designer/
~ Il computer e' una macchina progettata per velocizzare e automatizzare
gli errori.
bofh ~ "Incompatibilita` tra il cluster PostgreSQL m68k e la prontezza
della scheda di espansione pcmcia a 64bit: leggere la knowledgebase sul
sito 
http://www.cisco.com
" (polygen)


 e non ho molto tempo.
Male, male :P
-- 
ZER0://coder.gfxer.web-designer/
~ "Problemi" e' il nome che gli informatici danno a quelli che
comunemente verrebbero definiti "disastri"; altrimenti si chiamano
"features".
bofh ~ "Errore 248300: si prega di rivolgersi al congresso." (polygen)


 Sbidiguli come fosse sopra antani...
ROTFL
Eh, il mitico Tognazzi, quanto mi manca...
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M. -- 

 Eh, il mitico Tognazzi, quanto mi manca...
Gia'.. Cmq la frase di cui prima era generata a casaccio, se ne vuoi altre
della stessa risma basta chiedere :P
-- 
ZER0://coder.gfxer.web-designer/
~ "Massi' che e' uno standard, e' uno standard proprietario."
(Gio')
bofh ~ "I tecnici poco affidabili hanno modificato la velocita` angolare
della tv." (polygen)


 altre della stessa risma basta chiedere :P
Ok, puoi schedulare di mandarmene una al giorno? Tipo alle 08.50...cosě
arrivo e parto col piede giusto!


 arrivo e parto col piede giusto!
LOL, te ci scherzi, ma qualcosa posso inventarmi sul serio.. :P
-- 
ZER0://coder.gfxer.web-designer/
~ Alcune persone sono ancora vive per il semplice motivo che e'
illegale ucciderle.


 browser possono trattare il box model o meno..
ehm?
--
for (;;) artemis.alpeia();


 ehm?
Do you know box model? :)
-- 
ZER0://coder.gfxer.web-designer/
~ Tutti quelli che credono nella psicocinesi, per favore alzino la mia
mano.

 Do you know box model? :)
il modello sandbox? come quello di java?
-- 
artemis.alpeia();

hai esempi di usi che richiedono funzioni ricorsive? ^^;
Disegnare una curva di Koch?
L-System in javascript?
'bye


P.S.
"artemis.alpeia();" .. Cos'e', hai copiato la mia vecchia sign? :P
Ho visto che hai messo su Dialog.. bravo, bravo. 8) devo ricordarmi di
aggiornare quello che ho sul portatile.. ho visto anche la X-Face,
complimenti 8)
-- 
ZER0://coder.gfxer.web-designer/
~ "Lo dice il buon senso, ma il buon senso non e' uno standard".
(Jeffrey Zeldman)

 complimenti 8)
eh eh finora ho usato outlook, agent, knode, interfacce web varie, e ho
installato da poco dialog. Che mi resta? slrn, macsoup, xnews.. e che
altro?
-- 
#!/usr/bin/artemis.alpeia

 Male, male :P
Tutta colpa di chi ha inventato le giornate di 24 ore... Sono troppo
poche!!!  : D


 browser possono trattare il box model o meno..
Gia'... Purtroppo con le idiosincrasie dei vari browser ci litigo
spesso...


 altro?
Thunderbird, MesNews, Pimmy (te ne ho sparati tre a caso).. Io cmq se
potessi provare MACsoup, lo farei subito. :P
P.S.
Non e' che dovevi cambiare sign, eh! :D


 poche!!!  : D
Secondo me uno si lamenterebbe anche con la giornata di 32 ore. :P
-- 
ZER0://coder.gfxer.web-designer/
~ La vita e' una tempesta, ma prenderla nel culo e' un lampo.
(B. Grillo)

 Non e' che dovevi cambiare sign, eh! :D
no, tranquillo, ci mancherebbe! :D E' una sign casuale.
Pero' ancora non ho capito come fare per includere l'output di un
eseguibile, come con knode
-- 
<artemis:alpeia xmlns:artemis="
http://utenti.lycos.it/artemis
" />

 eseguibile, come con knode
Non credo si possa in modo nativo. Io l'ho fatto da scripting.
-- 
ZER0://coder.gfxer.web-designer/
~ Le donne si dividono in 4 categorie: le suore (non la danno a nessuno);
le puttane (la danno a tutti); le stronze (la danno a tutti tranne che
a te); le rompiballe (la danno a te e solo a te).
on air ~ "Muse - Time is Running Out"

 Secondo me uno si lamenterebbe anche con la giornata di 32 ore. :P
Ach... Temo tu abbia ragione...  ^_^
-- 
Mr. Fix @ work

 Io cmq se potessi provare MACsoup, lo farei subito. :P
Parole sante!  : )


 Non credo si possa in modo nativo. Io l'ho fatto da scripting.
calma, calma, non rovinarmi la sorpresa! :D sto lentamente scoprendo tutte
le lucettine e i meccanismi del nuovo giocattolo ^^
-- 
<img src="artemis.alpeia" />

 le lucettine e i meccanismi del nuovo giocattolo ^^
Ah, ok. :) Cmq non c'e' niente di strano.. la cosa piu' carina di Dialog e'
che "abbastanza" custom e flessibile, tramite i meccanismi di Action,
Scoring e Scripting. Non scendo nel dettaglio, per non "rovinarti" la
"sorpresa"..
Ho scritto "abbastanza" perche', IMVHO, potrebbe esserlo di piu'. Ha dei
"paletti" dei quali non ne capisco il motivo. Suppongo per esigenza di
programmazione. Inoltre la reference sullo scripting e' decisamente
carente.
-- 
ZER0://coder.gfxer.web-designer/
~ "Problemi" e' il nome che gli informatici danno a quelli che
comunemente verrebbero definiti "disastri"; altrimenti si chiamano
"features".
on air ~ "Muse - Time is Running Out"