Newsgroup: it.comp.lang.javascript
Titolo: Ottenere un'oggetto Applet da un'altra pagina

Ciao a tutti.
Ho un'applet in una pagina, e vlglio eseguirne un metodo. Nella pagina 
index.html, in cui ho il tag <applet> uso:
string = document.Applet.metodo(); //ritorna una String Java
Ma come faccio a fare la stessa cosa da un'altra pagina senza inserire 
l'applet anche li?
Sono riuscito con i frame, usando parent.nome_frame.Applet.metodo(), ma 
cosě funziona solo con i "figli" della pagina contenente <frameset>. Io 
vorrei poter usare l'applet in tutto il sito, anche lasciando questa in 
un frame alto 0 che mi rimanga sempre attivo.
Sicuramente č banale...

 
Esatto, intendevo prioprio che non riuscivo ad accedere all'applet con 
parent. E non riesco nemmeno con top...
Ti scrivo il riassunto del codice:
*******index.html********
[...]
<FRAMESET rows="0%,100%">
		<FRAME name="head" src="./head.html" frameborder="0"      		 
marginheight="0" marginwidth="0" noresize>
		<FRAME src="./index.html" frameborder="0" 						marginheight="0" 
marginwidth="0" noresize>
</FRAMESET>
[...]
**************************
**********head.html*******
[...]
<APPLET name="Applet" codebase="./applets" archive="applets.jar" 
code="it.bocys.appletsrv.Applet.class" width="0" height="0">
</APPLET>
[...]
**************************
********corsi.html********
[...]
<SCRIPT language="JavaScript"><!--
url=String(this.location);		
id=url.substring(url.lastIndexOf("?")+1,url.length);
 
strPage = top.head.Applet.elencaCorsi(id);			
 
document.write(strPage);
 
// end script -->
</SCRIPT>
[...]
**************************
Il debugger dice che top.head.Applet non č un oggetto o č nullo

 Il debugger dice che top.head.Applet non č un oggetto o č nullo
Intanto vedi se top.head punta effettivamente al frame che a te interessa.
Non so che browser usi, ma spero che abbia il supporto di innerHTML, cosi'
velocizziamo il debug.
Metti questo codice prima di richiamare il metodo dell'applet:
if (!top.head){
	alert("il frame HEAD non esiste");
	if (top.document && top.document.body)
		alert(top.innerHTML); // mostra il contenuto di top.
}else if(!top.head.Applet){
	alert("l'applet non esiste");
	if (top.head.document && top.head.document.body)
		alert(top.innerHTML); // mostra il contenuto di top.head.
 
	/*
		altri metodi per riferirsi all'applet
	*/
	if (!top.head.document.Applet)
		alert("top.head.document.Applet : null")
	else
		alert("trovata con 'top.head.document.Applet'");
	if (!top.head.document.applets[0])
		alert("top.head.document.applets[0] : null")
	else
		alert("trovata con 'top.head.document.applets[0]'");
}
Se top.head non esiste ti mostra il contenuto di top, cosi' che puoi vedere
se e' effettivamente il frameset che ti interessa. Idem per quanto riguarda
l'esistenza dell'applet: se trova top.head, ma non l'applet, ti mostra il
contenuto di tale frame in modo che tu possa verificare che sia
effettivamente la pagina che ti interessa.
Inoltre, dato che non sono affatto sicuro che la sintassi
"finestra.nomeApplet" sia effettivamente corretta, anche se l'ho presa per
buona in quanto tu mi hai detto che con la sintassi
"parent.nome_frame.Applet.metodo()" ti funziona in alcuni casi, ho aggiunto
un paio di codici in piu' per recuperare un riferimento ad "Applet".
E siamo sicuri che l'applet sia effettivamente caricata dal browser, quando
esegui il codice?
-- 
ZER0
~ The Tangent Universe collapsed 5973 days, 5 hours, 57 minutes and 40 seconds ago.
on air ~ "Various Artists - The Killing Moon"

>Il debugger dice che top.head.Applet non è un oggetto o è nullo

1. Hai ragione, ho sbagliato a postare la pagina che contiene frameset e 
che ho chamato index.html in realtà è CD.html.
2. Per figli, intendevo che il codice javascript che accede all'applet 
funziona (con parent.frame.applet.metodo) solo in head.html e 
index.html, ma non in altre pagine a cui si accede dai link in 
index.html, per esempio la pag. corsi.html in questione.
3. Uso firefox
4. Per la sintassi finestra.nomeApplet, funzionava, anche se non escludo 
di aver sottovalutato qualche dettaglio.
5. Adesso provo il tuo codice
6.GRAZIE!


Ok, era colpa della mancanza di document nella chiamata top.head.Applet!
Grazie, ciao!

 Grazie, ciao!
Di niente, ma stai attento al "quoting" la prossima volta:
http://wiki.news.nic.it/QuotarBene
:)
-- 
ZER0
~ The Tangent Universe collapsed 5973 days, 9 hours, 30 minutes and 7 seconds ago.
on air ~ "Daniele Silvestri - Un giorno lontano"