Newsgroup: it.comp.lang.javascript
Titolo: Explorer perde metodi?!

Explorer perde Metodi?!
Ho definito una classe Persona con due proprieta' (Nome, Tel) e un
metodo (Stampa())in un frame (figlio di top), quindi ho dichiarato un
oggetto di tipo Persona in "top" (top.A = new Persona).
Da questo frame riesco a richiamare tutte le proprieta' e i metodi
della classe Persona, ma quando cambio il location.href del frame in
questione caricando un altro frame succede:
* con Netscape 4.7 il secondo frame mantiene la possibilita' di
  accedere alle proprieta' e di utilizzare il metodo (Stampa) di Persona
* con Internet Explorer 5.0 il secondo frame mantiene la possibilita'
  di accedere alle proprieta ma perde l'uso del metodo, e mi viene
  segnalato l'errore:
  "Impossibile eseguire il codice da uno script liberato"
Come mai Explorer non mi permette di utilizzare i metodi mentre
Netscape e Opera si? C'e' qualche errore concettuale?
C'e' un modo per poter utilizzare un oggetto tra caricando pagine
diverse nella stessa finestra, senza dover creare due frame come ho
fatto io?
(ho provato senza frame, ma quando carico il secondo documente tutto
quello che ho dichiarato nel primo documento scompare)
Per chi avesse un po' di tempo riporto anche i sorgenti:
index.htm    pagina iniziale
Frame1.htm   frame quasi inutile
Frame2A.htm  definizione della classe e dichiarazione degli oggetti
Frame2B.htm  utilizzo degli oggetti
***************************** index.htm *****************************
<HTML>
<FRAMESET Rows="*, *">
  <FRAME Src="Frame1.htm">
  <FRAME Src="Frame2A.htm">
</FRAMESET>
</HTML>
***************************** Frame1.htm ******************************
<HTML>
<BODY>
<H1>Frame numero 1</H1>
</BODY>
</HTML>
***************************** Frame2A.htm *****************************
<HTML>
<HEAD>
<SCRIPT Language="javascript">
  function Persona(nome, tel)
  {
    this.Nome = nome
    this.Tel  = tel
    this.Stampa = ClasseStampa
  }
  function ClasseStampa()
  {
    document.write( 'Nome: ' + this.Nome )  
    document.write( '<BR>Telefono: ' + this.Tel + '<HR>' )
  }
</SCRIPT>
</HEAD>
<BODY>
<H1>Frame numero 2A</H1>
<SCRIPT Language="javascript">
  top.A = new Persona( "Franco", "123456" ),
  top.B = new Persona( "Pino", "99999999" );
  top.A.Stampa();
  top.B.Stampa();
</SCRIPT>
<A HRef="Frame2B.htm">Carica il Frame 2B</A>
</BODY>
</HTML>
***************************** Frame2B.htm *****************************
<HTML>
<BODY>
<H1>Frame numero 2B</H1>
<SCRIPT Language="javascript">
  document.write( '<STRONG>' + top.A.Nome + '</STRONG> Esiste!<BR>' );
  document.write( '<STRONG>' + top.B.Nome + '</STRONG> Esiste!<HR>' );
  top.A.Stampa(); // <- DA ERRORE!
  top.B.Stampa(); // <- DA ERRORE!
</SCRIPT>
</BODY>
</HTML>

metti gli script e le variabili "permanenti" al top..
è la soluzione migliore
--
Bye
        Ro<*¿*>berto

è la soluzione migliore
Ho provato a dichiarare le variabili nel frame principale, ma Explorer si 
blocca e si chiude il programma.
Probabilmente sbaglio qualche cosa, potresti farmi un esempio, magari 
utilizzando quello che avevo scritto nel mio primo post?
Grazie, Antonio
*********************************************************************
Contenuto del primo post:


*********************************************************************
e chiamerei dal frame che vuoi:
A.Stampa;

A.Stampa;
<script>
top.A.Stampa;
</script>
