Newsgroup: it.comp.lang.javascript
Titolo: Finestre popup e link... AIUTO!

Salve a tutti,
ho un piccolo problema con le finestre popup...
Passo subito all'esempio:
<a class="link" href="javascript:window.open('blahblah.html',
'titoloFinestra', 'toolbar=no,width=500,height=450');">
	LINK
</a>
ora questo frammento di codice è in un frame di nome "framecorpo"
Quando clicco sul link mi si apre la finestra popup ma il contenuto del
frame scompare
ed in esso appare una scritta "[object]".
Ora una soluzione, poco elegante a dir la verità, (e non sempre
funziona...) è quella
di far fare un submit ad un form (che per fortuna esiste) nella pagina
contenuta da framecorpo:
<a hef="javascript:window.mioForm.submit;window.open('blahblah.html',
'titoloFinestra', 'toolbar=no,width=500,height=450');">
	LINK
</a>
così la faccenda sembra funzionare ma solo la prima volta! Se chiudo la
popup e la riapro.. riappare in background.
Nel codice della popup è presente un window.focus() ma non sembra
servire.
Ora la cosa strana è che ciò si verifica solo se apro una finestra
attraverso un link.
Se infatti aggancio il codice di apertura all'evento onclick di un
pulsante.. funziona tutto correttamente.
Ho provato a giocare un po' con la proprietà "target" del tag <A> ma
nulla da fare..
Come soluzione ho agganciato il codice di popup all'onclick del tag:
<a class="link" onclick="javascript:window.open('blahblah.html',
'titoloFinestra', 'toolbar=no,width=500,height=450');">
	LINK
</a>
per fortuna lo stile link applicato ad <A>, copre un po' il fatto che..
non è più un link quello....
Ovviamente se questa soluzione mi soddisfacesse al 100% non starei qui a
rompere.. infatti:
1) il finto link non è più sensibile allo stile a:hover che cambiava
colore ai link quando ci si passava sopra col mouse
2) non so come applicare (se si può fare) ad uno specifico stile di un
tag la pseudoclasse hover
(altrimenti mi accontenterei anche del finto link poichè si
comporterebbe in tutto e per tutto come il link che volevo io!)
3) possibile che non ci sia un modo per fare la cosa pulita senza
trucchi??
PS:
nota:uso IE6 e ciò che scrivo è sa usare solo su IE, quindi vanno bene
anche soluzioni "proprietarie"
PPS:
se non c'è una soluzionepulita mi potreste postare un frammento di
codice che cambia colore a delle scritte quando
ci si passa sopra col mouse (in javascript).
grazie in anticipo a chi vorrà aiutarmi!
Lorenzo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come soluzione ho agganciato il codice di popup all'onclick del tag:
Metti un link fittizio:
    href="javascript:void(0)" onclick="javascript: open('blahblah.html',
'titoloFinestra', 'toolbar=no,width=500,height=450');">
Maurizio.

 Come soluzione ho agganciato il codice di popup all'onclick del tag:
Metti un link fittizio:
    href="javascript:void(0)" onclick="javascript: open('blahblah.html',
'titoloFinestra', 'toolbar=no,width=500,height=450');">
Maurizio.

 Quale sia la differenza, una volta l'avevo caputo ma ora non lo ricordo
piů
Il punto č il valore restituito dalla funzione. Il codice scritto da Lorenzo
assegnava a href il risultato di window.open: un'oggetto, da cui [object]
nel frame. Tu nel primo caso hai assegnato ad href una funzione che non
restituisce valori, nel secondo caso l'operatore void che impedisce
all'espressione che lo segue di restituire valori. In ambo i casi:
"href==undefined".
Ciao

 Quale sia la differenza, una volta l'avevo caputo ma ora non lo ricordo
piů
Il punto č il valore restituito dalla funzione. Il codice scritto da Lorenzo


 Il punto č il valore restituito dalla funzione.
Giusto. Ora mi fai ricordare. Href dell'html considera tutto ciň che č
riportato dalla funzione come qualcosa da stampare nella nuova pagine. Ad
esempio, se la funzione richiamata fosse:
function dummy() {
    return "pagina di prova"
}
il browser stamperebbe questa scritta su una pagina vuota.
E cosě mi fai venire in mente una nuova soluzione:
    <a href="javascript:window.open('blahblah.html', 'titoloFinestra',
'toolbar=no,width=500,height=450'); void(0)">
Siccome l'ultima funzione riporta un void, sulla pagina del browser non
viene stampato nulla.
Grazie,
Maurizio.