Newsgroup: it.comp.lang.javascript
Titolo: aiuto urgente [lunghetto]

Ciao a tutti,
premetto che non sono un esperto di javascript e per questo chiedo il vostro
aiuto.
Il problema è il seguente: ho inserito due javascript (non realizzati da me)
su tutte le pagine html con lo scopo di ricreare il frameset nel caso la
pagina venga richiamata all'esterno del sito o, comunque, da una qualsiasi
altra pagina del sito (esistono diverse sezioni, con menu' differenti),
attraverso la destinazione "top".
1) il primo javascript è stato inserito nella prima pagina richiamata dal
frameset e ha il seguente codice:
<script>
if(
self.name
==
top.name
){
location.href="index.htm"
}
if(top.location.search!='')
{self.location.href=top.location.search.substr(1)}
</script>
2) il secondo viene inserito nelle pagine seguenti:
<script>
if(
self.name
==
top.name
){
location.href="index.htm?" + document.URL
}
</script>
Ora, tutto funziona bene se richiamo le pagine con link e destinazione
"_top", ma non funziona se inserisco anche il richiamo all'ancora
(pippo.htm#nomeanchor). Non solo, se la chiamata viene dalle pagine (1)
verso le (2) funziona, ma se richiamo le pagine (1) da una pagina (2), con
l'ancora, lo script mi rimanda all'inizio della pagina oppure non funziona
del tutto.
Qualche anima pia puo' aiutarmi?
O quanto meno "leggermi" in parole chiave il codice (non capisco
l'istruzione: "if(top.location.search!='')
{self.location.href=top.location.search.substr(1)}").?
Per vedere il funzionamento in condizioni reali:
http://212.25.176.77/guida730/9qe/img01/index.htm
cliccando sulle caselle presenti nell'immagine superiore si dovrebbe
navigare all'interno della sezione (ogni sezione, con il proprio frameset, è
formata dall'immagine e dalle relative pagine). Dato che i link
dell'immagine hanno destinazione "-main" sembrano funzionare ma:
a) se clicco su "Principali interventi edilizi che usufruiscono della
detrazione di imposta" (ultimo link del menu' di sinistra) e poi provo a
cliccare su una casella dell'imagine, il javascript non funziona più...
b) se provo a richiamare dall'esterno il link + anchor mi carica solo la
pagina, puntata sull'inizio e non sull'anchor.
Prometto che una volta terminato il lavoro (che è urgente) mi metto a
studiare javascript :-)
Grazie in anticipo
Ciao
Carlo CL

 attraverso la destinazione "top".
Sostanzialmente lo script deve "passare" una variabile (cioè l'indirizzo
della pagina da mettere nel frame) da una pagina all'altra. Le variabili in
JavaScript vengono cancellate quando si esce dalla pagina; ma esistono
diversi trucchi per aggirare questa limitazione.
Il trucco utilizzato nel tuo script è di memorizzare la variabile nella
stringa di ricerca. Ad esempio, se apro la pagina "pippo.htm", lo script
reindirizza il browser alla pagina "index.htm?pippo.htm"; lo script nel
frame principale legge la variabile e aggiorna il frame stesso. Questo
metodo però dà alcuni inconvenienti, come tu stesso hai notato, e quindi te
lo sconsiglio.
Un altro trucco è di memorizzare la variabile nella proprietà 
window.name
,
che essendo persiste tra una pagina e l'altra. Lo script da inserire nella
prima pagina è:
if (self.location == top.location)
{
 
top.name
 = '';
    top.location.href = 'index.htm';
}
if (top.name.indexOf('frameURL=') == 0)
{
    self.location.replace(top.name.substring(9));
 
top.name
 = '';
}
Lo script da inserire nelle pagine seguenti è:
if (self.location == top.location)
{
 
top.name
 = 'frameURL=' + self.location.href;
    top.location.href = 'index.htm';
}
Così non dovrebbero esserci problemi. Ti avverto però che questo script non
funziona in Opera; però pare che solo lo 0,2% usa Opera, quindi questo
inconveniente darà fastidio a pochi.
G. G.

Scusami, ho dimenticato un pezzo di frase:
Un altro trucco è di memorizzare la variabile nella proprietà 
window.name
che, essendo una proprietà della finestra e non della pagina, persiste tra


 ha scritto nel messaggio
news:KwSc8.714$_u5....@news1.tin.it...


 aiuto.
Mentre rispondo non sono collegato e non posso provare, comunque almeno 
per le ancora il tuo problema č che non fanno parte dalla location.search 
(che č, per intenderci) l'insieme dei parametri 
?chiave=valore&chiave1=valore2...
Vedi se puň aiutarti questo tutorial:
http://www.jsdir.com/tutorials/location.asp
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
    itALY = it

 ha scritto nel messaggio
news:YtSc8.699$_u5....@news1.tin.it...

resta un problema,
se chiamo un link+ancor ad una "prima pagina", mi carica sì la pagina, ma
punta all'inizio e non all'ancora. Ciò non avviene invece (cioè lo script
funziona perfettamente) se richiamo una delle pagini seguenti...
Il problema si può risolvere?
Grazie in anticipo
Carlo CL