Newsgroup: it.comp.lang.javascript
Titolo: Clonare o eseguire localmente funzione in un altro frame...

Ciao,
immaginiamo di avere una pagina principale (top) dove sia definita:
function foo() { etc... }
in questa pagina sia inoltre definito un Iframe avente il suo bel contenuto.
La questione è: dall'Iframe è possibile chiamare foo() in modo che sia 
eseguita localmente (dentro il frame stesso) ?
Chiarisco: se dall'Iframe viene invocata top.foo(); la sua esecuzione 
interessarà gli oggetti presenti nella pagina principale (top).
Vorrei invece sapere se è possibile dare a foo() visibilità locale o 
altrimenti ottenerne un clone senza doverla includere esplicitamente 
nell'iframe.
Ciauz,
HyP 

 eseguita localmente (dentro il frame stesso) ?
non fai prima a passare l'oggetto window alla foo() ?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 non fai prima a passare l'oggetto window alla foo() ?
se scrivessi io la foo(), immagino di si....
Idee su come adattare il procedimento ad oggetti già belli e pronti ?
Ciao e grazie,
HyP 

 Idee su come adattare il procedimento ad oggetti già belli e pronti ?
hai già provato un qualcosa del tipo
 foo=top.foo;
 foo();
?
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 ?
Purtroppo si...ma l'effetto è generalmente disastroso :-)
Ciauz,
HyP 

 Purtroppo si...ma l'effetto è generalmente disastroso :-)
e eval("foo=new function() {"+top.foo+"}");
? (le stò sparando, non ho tempo di provare e non ricordo l'esatta sintassi
che restituisce top.foo [senza parentesi ovviamente])
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 che restituisce top.foo [senza parentesi ovviamente])
L'idea č carina! Cmq, l'esatta sintassi č:
eval(""+top.foo);
e pare anche funzionare:-)
Ora perň le cose si complicano.....se nel top sono definite:
function foo() { ... }
foo.prototype.bar=function() { ... }
la soluzione proposta non clona il metodo bar().....:-(
Senza farlo in modo manuale, hai qualche idea su come poter iterare tra 
tutti i metodi ?
(per complicare ulteriormente le cose, diciamo che nel top non puň/non deve 
esistere nessuna istanza dell'oggetto foo )
Ciauz,
HyP

 tutti i metodi ?
senza studiarci no (e non ho tempo, ahimé ...)


 la soluzione proposta non clona il metodo bar().....:-(
Fermo lì. Allora "foo" è un costruttore, non una funzione canonica. Da
quella crei degli oggetti. Questo cambia le carte in tavola, va capito
meglio qual'è la tua casistica specifica.
-- 
~ "Affronta gli ostacoli e fa qualcosa per superarli.
Scoprirai che non hanno neanche la metà della forza che pensavi
avessero." (Norman Vincent Peale)

 senza studiarci no (e non ho tempo, ahimé ...)
Grazie lo stesso delle dritte! :-)
Ciauz,
HyP

 meglio qual'è la tua casistica specifica.
Mi servirebbero entrambe le soluzioni....
Risolto il caso (semplice) di funzione "canonica", con gli oggetti la cosa 
mi pare un tantino più macchinosa:-)
Se esistesse una istanza dell'oggetto nel top, probabilmente sarebbe facile 
iterare tra le sue proprietà, ma se l'istanza non esiste ? Idee ?
Ciao e grazie,
HyP 

 HyP
De nada.
-- 
~ "Il giusto altro non è che l'utile del più forte."
(Trasimaco)

 scopo che avresti potuto ottenere in modo diverso e più semplice.
Questo è sicuro, solo che, avendo a che fare con vecchio codice 
(sfortunatamente ereditato:-)), cercavo un modo che mi permettesse di 
aumentare la velocità di caricamento, presevarndo la compatibilità e 
riducendo al minimo i rimaneggiamenti necessari.... Da qui l'idea di clonare 
tutto in memoria...
Ciauz,
HyP 

 aumentare la velocità di caricamento,
Onestamente, non è questa la strada.
-- 
~ La donna è un male, ma un male necessario.
(Aulo Gellio)