Newsgroup: it.comp.lang.javascript
Titolo: Caricamento di frame, errore javascript e "debug" di IE attivo

Salve a tutto il ng,
premetto che di javascript non sono assolutamente un esperto, e quello che
so l'ho imparato tutto sul campo e da qualche tutorial sul web.
Ho un problema con una pagina jsp composta da un frame A visibile (che
contiene un form con un certo numero di campi) ed un frame nascosto B che
serve per valorizzare i campi del form contenuto in A, evitando un refresh
visibile della pagina. Ad esempio, l'utente clicca su un'immagine in A, ciò
scatena una submit del form con target = B. Lato server (la parte server è
scritta in Java) i dati vengono elaborati, e "rispediti" al frame B. In
questo modo, con una funzione associata all' evento onload su B valorizzo i
campi di A nel modo seguente:
function valorizza()
{
 //...
 parent.document.a.nome_campo.value =  unescape('<%=valore_campo%>');
//...
}
Il problema è dovuto al fatto che può accadere che il frame A venga caricato
dopo il frame B, pertanto inizialmente si verificavano parecchi errori del
tipo "Previsto Oggetto", com'è prevedibile, dal momento che da B si cerca di
accedere ad un campo che in A non esiste ancora, perchè la pagina A non è
stata ancora caricata.
Per ovviare al problema, nella funzione "valorizza()" ho aggiunto una
semplice gestione delle eccezioni:
function valorizza()
{
    try {
        // qui c'è il codice che valorizza i campi del frame visibile
    }
   catch(errore)
  {
     setTimeOut("valorizza()",200);
     return;
  }
}
So che il supporto di try / catch dipende dal browser, ma per una serie di
ragioni l'applicazione web girerà solo su Internet Explorer 6.0, in intranet
aziendale. L'idea era di "forzare" il frame B a valorizzare il frame A : se
quest'ultimo non è stato caricato, verrà sollevata un'eccezione; quando sarà
stato caricato,
valorizza() terminerà senza errori.
Il problema è il seguente: in alcuni casi, intermittenti, viene ancora
segnalato l'errore "Previsto Oggetto". Ho notato però che, se dalle opzioni
di Internet Explorer, disabilito il debug, l'errore non si ripresenta e il
frame A viene correttamente popolato dei valori previsti ad opera del frame
B, ovviamente dopo un ritardo che varia a seconda che il frame A sia stato o
meno caricato per primo, rispetto al frame B.
La mia domanda è la seguente : qualcuno sa se, per caso, la "modalità debug
attiva" di internet explorer possa andare o meno in conflitto con il
meccanismo di gestione delle eccezioni, in modo tale che a volte appaia
l'errore (perchè il debugger intercetta 'per primo' l'errore) e a volte no
( perchè il meccanismo di eccezione stavolta arriva primo) ?
Probabilmente la mia domanda è assurda, però non saprei proprio più cosa
pensare....
Grazie a chiunque vorrà rispondermi.

Prova ad aggiungere una proprietà alla window della finestra 
destinazione nell'onload:
window.caricata = 1;
e nella funzione "valorizza" prima del try fai:
if( parent.caricata != null ) {
	.... il tuo codice ....
} else {
      setTimeOut("valorizza()",200);
      return;	
}
Non so se risolve il problema ma questo è ciò che faccio io di solito.
Ciao.
	-Ema-

"-Ema-" <a@a.a> ha scritto nel messaggio
news:5CXMc.11784$1V3.2...@twister2.libero.it...

Ciao, la tua idea mi sembra davvero buona, la proverò senz'altro. Grazie.
Cosa ne pensi  del fatto che il blocco try catch non intercetti l'errore ? A
me sembra davvero molto strano....
Grazie ancora !
Scorpio.

 me sembra davvero molto strano....
Non saprei proprio. Messa così effettivamente è strano. Per carità un 
baco nel browser può sempre esserci (parlando poi di IE... :-P ), ma è 
più facile che sia tu a sbagliare da qualche parte. Sei sicuro che 
l'eccezione venga sollevata nel blocco try?
-Ema-