Newsgroup: it.comp.lang.javascript
Titolo: Conflitto tra write e location.href?

Salve a tutti.
In una pagina ho realizzatouna divisione in tre frames, ed uno di
questi frame (che ho chiamato 'commento') serve a riportare un
commento che viene scritto quando si passa su un link della frame di
menu, mentre uscendo dal link si resetta a quello che era (e che
potrebbe cambiare).
Per fare cio' mi sono dotato di queste due funzioni:
function comm_set(testo) {
  with (commento.window.document) {
    clear()
    writeln('<HTML><BODY BGCOLOR="#ffffff">')
    writeln('<FONT FACE="Verdana, Arial, Helvetica" SIZE="-1">')
    writeln(testo)
    writeln('</FONT></BODY></HTML>')
    close() }
  return true }
function comm_go(dove) {
  commento.window.location.href=dove;
  return true }
..e tutto va perfettamente :-)
Allora dov'e' il problema? Il problema e' che quando scorro
velocemente con il mouse sui link mi viene segnalato un errore su una
delle righe write della funzione comm_set, IMHO perche' tento di
scrivere su una frame mentre ne sto cambiando l'href.
Come ne esco? A me starebbe benissimo di lasciare li' la funzione in
caso di errore, o anche solo di stoppare i messaggi di errore nella
funzione comm_set, ma non riesco a venirne a capo :-(
------
bale...@dada.it
 
http://zap.to/balestra
  ICQ#:14303012
" Ora mai che i baci tuoi piu' non mi sazian
  cerchero' un'altra donna dentro ai sogni di Tarzan... "

In una pagina ho realizzatouna divisione in tre frames, ed uno di....
begin 666 prova.zip
<encoded_portion_removed>

Prova a fare una pagina con due frame e in quello del menů inserisci questo:
<html>
<head><title></title></head>
<body bgcolor="#ffffff">
<script language="javascript">
function m1()
{
   desc1.style.visibility = "visible";
   desc2.style.visibility = "hidden";
   desc3.style.visibility = "hidden";
}
function m2()
{
   desc1.style.visibility = "hidden";
   desc2.style.visibility = "visible";
   desc3.style.visibility = "hidden";
}
function m3()
{
   desc1.style.visibility = "hidden";
   desc2.style.visibility = "hidden";
   desc3.style.visibility = "visible";
}
function off()
{
   desc1.style.visibility = "hidden";
   desc2.style.visibility = "hidden";
   desc3.style.visibility = "hidden";
}
</script>
<a name="el1" href="" onmouseover="m1()" onmouseout="off()">Elemento
1</a><br>
<a name="el2" href="" onmouseover="m2()" onmouseout="off()">Elemento
2</a><br>
<a name="el3" href="" onmouseover="m3()" onmouseout="off()">Elemento
3</a><br>
<div id="descrizione">
<span id="desc1" style="position:absolute; visibility:hidden">Descrizione
1</span>
<span id="desc2" style="position:absolute; visibility:hidden">Descrizione
2</span>
<span id="desc3" style="position:absolute; visibility:hidden">Descrizione
3</span>
</div>
</body>
</html>
L'effetto dovrebbe essere lo stesso cambiandoci un paio di cose.
Ciao
Giuseppe Di Natale
gdin...@tin.it

e dirmi cosa non va.
Ho guardato... tu hai messo il JS dentro una frame, e poi lo chiamavi
da un'altra frame senza indicarla.
Io, visto che quelle funzioni mi servono ovunque, le ho messe
direttamente dentro l'index.html, e poi le richiamo con:
onMouseOver="parent.comm_set('ciao mamma')"
Indico cioe' la window a cui la funzione appartiene.
BTW: come mai non hai seguito il thread?


L'effetto dovrebbe essere lo stesso cambiandoci un paio di cose.
L'idea e' carina, ma mi priva della possibilita' che volevo mantenere:
la frame di "commento" deve contenere altre cose (link, immagini o
quello che sia), e se al MouseOver sul link contiene la descrizione,
all'uscita deve riprendere quello che aveva prima e che puo' variare
(e che quindi non posso riscrivere da JS.
Ecco perche' preferirei scrivere per il commanto e settare/risettare
l'href all'uscita: in una variabile memorizzo la location.href attuale
della frame di commento, e la ricarico (quale che sia) al MouseOut.
Grazie comunque!


Figurati, sempre a tua disposizione.
Giuseppe Di Natale
gdin...@tin.it

della frame di commento, e la ricarico (quale che sia) al MouseOut.
Mi rispondo da solo, ma non sto diventando schizofrenico ;-))
E' solo per dire che ho risolto: su IE4 o Nav4 (o superiori) posso
utilizzare la struttura di 'try {} catch {}'
Ma siccome 'try' su IE3 restituisce un errore, allora determino il
browser con il client sniffer di Netscape, poi
if (is_ie4up || ie_nav4up) eval('try { comandi } catch (e) {...}')
else { comandi }
..e funziona :-))
