Newsgroup: it.comp.lang.javascript
Titolo: Coordinate di un link ?

Ciao,
qualcuno mi sa dire se è possibile ricavare le coordinate di un link 
all'interno di una pagina html?
Ovvero, quando la pagina è visualizzata sul client, riesco a leggere i 
valori /top/ e /left/ (in pixel) che mi indichino dove è piazzato il link 
nella pagina?
Ciauz,
HyP 

 nella pagina?
Dipende cosa ci devi fare: se ti servono perché vuoi piazzare un div
al passaggio del link in questione, a mo' di tooltip per intenderci,
oppure come se fosse un menu quando esegui il click; puoi utilizzare
l'oggetto event.
-- 
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)

 l'oggetto event.
Ottimo...diciamo che ci voglio piazzare un div...
event.clientX e event.clientY potrebbero andare:-) Testestò, grazie!
Ciauz,
HyP 

 event.clientX e event.clientY potrebbero andare:-)
Ok, questo funziona...però è sorto un altro problemino:
- Assegno un evento (onmouseover) al div.
- Passando sopra il link, sposto il div sopra il link.
Tutto bene finchè il div è "colorato"; se il div ha lo sfondo trasparente 
non mi dà più l'effetto desiderato.
E' possibile quindi portare in primo piano solo un riquadro "logico" senza 
doverlo per forza riempire ??
Grazie,
HyP 

 doverlo per forza riempire ??
Per ora ho definito il div con opacità 1 e l'effetto è diventato quello 
voluto.
Se qualcuno ha soluzioni più eleganti è benvenuto:-)
Ciauz,
HyP 

> Se qualcuno ha soluzioni più eleganti è benvenuto:-)
Premesso che non ho capito quasi ninete,
cmq potrebbe funzionare:
background-color:transparent;
background:url(blank.gif) repeat;
(dove blank.gif è un img 1x1 trasparente)

 doverlo per forza riempire ??
In verità, in verità ti dico... non ho ben capito la domanda. Intuisco
il "campo" della problematica, ma non ho ben chiaro lo scenario:
a) Che funzione associ all'onmouseover di quale div e perché.
b) Che funzione associ a quale evento, a quale link e quale div sposti
sopra il link (il medesimo del punto "a"?)
c) dove esattamente sposti il suddetto div (fino a coprire il link?)
e il punto fondamentale:
d) Qual'è l'effetto desiderato che non ti da più? :D
-- 
~ Se i sintomi persistono, insultare il medico.

 d) Qual'è l'effetto desiderato che non ti da più? :D
Ricapitolo perchè in effetti citare il link potrebbe aver tratto in inganno, 
cmq:
- Ho un link, con definito l'evento "onmouseover", che fa in modo di 
spostare un div sopra il link stesso, coprendolo interamente.
- Il div ha, a sua volta, il proprio evento "onmouseover".
E' chiaro che spostando il div sopra il link, "perdo" la possibilità di 
cliccare sul link. Questo non rappresenta cmq, il centro della problematica.
Ho scritto "perdo" tra apici, perchè sarebbe il comportamento naturale che 
mi sarei aspettato, invece:
- Se il div (vuoto) ha uno sfondo colorato, effettivamente il link è 
completamente nascosto da esso e l'area risponde all'evento "onmouseover" 
del div stesso.
- Se il div ha uno sfondo trasparente non viene generato il suo evento 
"onmouseover" e il link rimane cliccabile.
Come dicevo, alla fine ho risolto colorando l'area del div e minimizzando la 
sua opacità in modo tale da fargli coprire comunque il link, lasciandolo 
però graficamente visibile....
Ciauz,
HyP

 (dove blank.gif è un img 1x1 trasparente)
Mmm, la gif trasparente, potrebbe funzionare anche....
grazie e ciao,
HyP 

 però graficamente visibile....
Se non t'interessa che il contenuto del DIV sia visibile, forse ti
conviene fare così.
-- 
~ Ci sono tre modi di fare le cose.
Giuste, sbagliate e come dico io. (Robert De Niro in "Casinò")

 (dove blank.gif è un img 1x1 trasparente)
Immagini GIF con sfondo trasparente andrebbero evitate come background
di elementi, almeno su IE.
-- 
~ "Uccidere è proibito, quindi tutti gli assassini vengono puniti,
a meno che non uccidano su larga scala e al suono delle trombe."
(Voltaire)

 "vuoto" per IE. In tutti i sensi.
Ormai che abbiamo sollevato la questione...completiamola:-)
Ho detto che non mi interessa mantenere la validità del link, perchè nel 99% 
dei casi dovrò applicare questa tecnica con elementi non cliccabili (ho 
utilizzato i link solo come test).
E se invece volessi farlo ? :-)
Potrei intercettare l'evento "onclick" del div e simulare il click del link 
che vi sta sotto, ma come recuperare il suo url  senza doverlo passare 
esplicitamente?
Ciauz,
HyP 

 E se invece volessi farlo ? :-)
Allora ho bisogno del quadro generale per poter comprendere la
situazione.
Mi spiego: l'unico motivo che mi viene in mente, per volere un
DIV del tutto invisibile sopra degli elementi, è per bloccarne
la ricezione degli eventi del mouse. Si può opinare sulla cosa
ma ha un senso.
Ma se così non è, il senso donde sta?
Insomma, qual'è il tuo obiettivo finale? Solo in base a questo
è possibile scegliere il giusto approccio.
-- 
~ You don't have to be crazy to be a webmaster. But it helps.

 passare esplicitamente?
Mi rispondo da solo:-)
Basta scrivere qualcosa tipo:
<a href="
http://www.google.it
" 
onmouseover="SpostaDiv(event.clientX,event.clientY,this.href);">Google</a>
la funzione SpostaDiv, piazzerà il div nel punto giusto e saprà come 
maneggiare un eventuale click su di esso!
Grazie e tutti per le risposte,
HyP 

 è possibile scegliere il giusto approccio.
Comprendo le tue perplessità:-))
In sintesi dovevo fare una specie di "balloon-tooltip" che fosse 
"over-iframe".
Ovvero, gli elementi cui è associato un tooltip sono dentro degli iframe, 
spesso troppo piccoli per contenere tutto il messaggio.
Piazzando un div in posizione "top" e associando l'apparizione del tooltip 
al suo evento "onmouseover" riesco nell'intento.
Grazie ancora,
HyP 

 "over-iframe".
D'accordo. Ma:
Un "balloon-tooltip" non va a coprire l'elemento che indica, anzi.
Inoltre, essendo un tooltip, è per forza di cose "pieno".
Per non parlare poi della trasparenza, giacché se fosse invisibile
perderebbe di senso.
Ergo, continua a sfuggirmi qualcosa probabilmente. :)
-- 
~ "It may be that the old astrologers had the truth exactly reversed,
when they believed that the stars controlled the destinies of men.
The time may come when men control the destinies of stars."
(Arthur C. Clarke)

 Ergo, continua a sfuggirmi qualcosa probabilmente. :)
Ho capito, cosa non hai capito...:-))
Non è il ballon-tip ad essere invisibile...
Sappiamo che se associo il ballon-tip al link (dentro l'iframe), questo 
viene parzialmente tagliato dato che il frame è piccolo...
Allora l'idea è:
- Prendo un div (trasparente/invisibile) che non sta nell'iframe, ma in 
posizione top.
- Associo il ballon-tip al div (quindi anch'esso in posizione top).
- Al link invece associo solo lo spostamento del div sopra se stesso.
Ergo:
- Passando sul link, il div va sopra il link "oscurando" i suoi eventi.
- L'evento che scatta è quindi l' "onmouseover" del div....che a sua volta 
fa apparire il balloon-tip non più dentro l'iframe e quindi non più 
tagliato.
Spero di aver reso un po' meglio l'idea:-)
Ciauz,
HyP 

 tagliato.
Ecco č questo che non mi torna. A che ti serve il div invisibile? Non
potresti sempicemente far apparire il balloon, presente nel top e non
nell'iframe, sull'evento onmouseover del link?
Il risultato č il medesimo, e ti eviti tag inutili e passaggi in piů.
-- 
~ "Sono diventato un medico per le stesse ragioni di tutti:
Donne, soldi, potere, e donne." (Dr. Cox)

 Il risultato è il medesimo, e ti eviti tag inutili e passaggi in più.
Il problema è che il ballon-tip è un oggettino già precostruito e non è 
previsto che gli si diano le coordinate di dove apparire: si arrangia lui 
secondo la posizione dell'elemento scatenante l'evento.
Ciauz,
HyP 

 di elementi, almeno su IE.
why?

 why?
Se ne è già parlato in questo NG. Perché incidono pesantemente sulla
renderizzazione, in termini di velocità e calcolo. Questo, sino alla
versione 6 almeno. Ovviamente in determinate situazioni, l'effetto è
decisamente più evidente che in altre.
Quindi, se è possibile evitarne l'uso, è preferibile.
-- 
~  "FINARMENTE  LI SFRATTATI AVRANNO UN TETTO SULLA  TESTA!
 ...però tirato ammodino, un  tegolo pe' vorta.." (Il vernacoliere)

 Quindi, se è possibile evitarne l'uso, è preferibile.
ah, interessante

 si arrangia lui secondo la posizione dell'elemento scatenante l'evento.
Per l'appunto: ma anche tu sposti il tuo div secondo la posizione del
tag che scatena l'evento. Ti basta far sì che lo stesso comportamento
lo abbia il balloon tooltip (e mi stupisco che già non ce l'abbia: se
lo metti nel top, invece che nell'iframe, come si comporta?)
-- 
~ La donna è un male, ma un male necessario.
(Aulo Gellio)

 lo abbia il balloon tooltip
Dato che la funzione showTip() non accetta coordinate, che faccio ?
Ciauz,
HyP 

 Del tooltip io non conosco nulla che non sia la funzione che lo crea:
Onde evitare una trafila di post, hai online la pagina di cui abbiamo
parlato fin'ora; oppure un indirizzo di una pagina anche di terzi, la
quale usa tale oggettino? :) 
-- 
~ "Se un uomo non č disposto a lottare per le sue idee, o le sue idee
non valgono nulla o non vale niente lui."
(Ezra Pound)