Newsgroup: it.comp.lang.javascript
Titolo: Ricostruire un frameset

Ho un sito composto da tre frame (top, left, central) ho usato il seguente
script per far si che su qualsiasi pagina si acceda i frame vengono
riscostruiti automaticamente:
<script>
if (
self.name
==
top.name
)
{
document.write('<frameset rows="120,*" frameborder="NO" border="0"
framespacing="0"> ')
document.write('<frame name="top" scrolling="NO" noresize src="top.asp"
frameborder="NO">')
document.write('<frameset cols="185,*" frameborder="NO" border="0"
framespacing="0"> ')
document.write('<frame name="left" noresize scrolling="NO" src="left.asp"
frameborder="NO">')
document.write('<frame name="central" src='+document.location.href+'?a>')
document.write('</frameset>')
document.write('</frameset>')
}
</script>
Il problema nasce con il frame central che mi dovrebbe visualizzare la
pagina a cui sto accedendo,
infatti se accedo alla seguente pagina
http://www.miosito.it/news.asp?IDNews=106
 i due frame top e left vengono
ricostruiti normalmente mentre nella pagina central mi viene visualizzato un
errore di accesso al database, mentre se accedo alla seguente pagina
http://www.miosito.it/news.asp
 la ricostruzione avviene completa e mi viene
visualizzato nella pagina central il contenuto del primo record del
database.
Il problema credo che sia nella sintassi della riga: document.write('<frame
name="central" src='+document.location.href+'?a>') che sembra non rispedire
correttamente l'intero link.
Spero che qualche mago di voi riesca a capire quale sia il problema.
grazie dell'attenzione

 name="central" src='+document.location.href+'?a>') che sembra non
rispedire
Non ce la faccio a vedere l'intero script; nella stringa sopra mancano però
le virgolette aperte-chiuse per src:


 document.write('<frame name="central"
src="'+document.location.href+'?a">')
credo che si possano omettere le virgolette in questo caso, comunque ho
provato anche a meterle mi da sempre lo stesso problema.
Sai per caso dove posso trovare qualche script che svolga la funzione di
ricostruire i frame?

non capisco bene lo scopo: non vuoi che un utente chiami la pagina news.asp
direttamente?
Perché non chiami la pagina corretta (top.location='tuapaginacorretta.asp'),
passandogli il parametro per visualizzare la stessa news nel frame corretto?

 direttamente?
Scusa sono io che non riesco a spiegarmi bene.
Ti ringrazio per il tuo interessamento alla cosa.... ora cercherò di
chiarirti il tutto...
Sto gestendo il sito 
www.vinitaliani.it
 il quale come si può vedere è
formato da 3 frame nel frame left c'è la barra di navigazione il top i
banner e nel frame centrale vengono caricate le pagine dinamiche.
Il problema si è presentato nel momento in cui ho visto che google aveva nei
suoi archivi link a parti del mio sito che se cliccate aprivano la singola
pagina dinamica senza il resto dei frame rendendo così impossibile la
navigazione ad un potenziale utente come si può vedere da questo link
http://www.vinitaliani.it/news.asp?IDNews=109
 .
A questo punto avevo bisogno di un qualche script inserito nella pagina
news.asp che mi ricreasse tutti i frame e mi visualizzasse la pagina
dinamica a cui accedevo quindi ho utilizzato il seguente script:
<script>
if (
self.name
==
top.name
)
{
document.write('<frameset rows="120,*" frameborder="NO" border="0"
framespacing="0"> ')
document.write('<frame name="top" scrolling="NO" noresize src="top.asp"
frameborder="NO">')
document.write('<frameset cols="185,*" frameborder="NO" border="0"
framespacing="0"> ')
document.write('<frame name="left" noresize scrolling="NO"
src="left-bar.asp" frameborder="NO">')
document.write('<frame name="central" src="news2.asp">')
document.write('</frameset>')
document.write('</frameset>')
}
</script>
il tutto sembrava funzionare come si puo vedere da questo link
http://www.vinitaliani.it/news2.asp?IDNews=105
mi veniva ricostruito tutto solo che nella pagina centrale non veniva
visualizzata la notizia relativa all ?IDNews=105 notizia ma sempre la stessa
notizia che corrisponde al primo record del database qualsiasi link inserivo
come si può vedere da qui:
 
http://www.vinitaliani.it/news2.asp?IDNews=104
http://www.vinitaliani.it/news2.asp?IDNews=103
http://www.vinitaliani.it/news2.asp?IDNews=102
naturalmente il problema era la seguente riga:
document.write('<frame name="central" src="news2.asp">')
al posto di src="news2.asp" bisognava trovare un qualche oggetto che mi
copiasse il link completo e me lo visualizzasse correttamente quindi ho
utilizzato la seguente riga:
document.write('<frame name="output" src="'+document.location.href+'?a">')
dove src="'+document.location.href+'?a">' doveva svolgere tale compito ma in
realtà ciò non avviene come si può vedere da quest'altro link di una pagina
modificata in tal modo:
http://www.vinitaliani.it/news1.asp?IDNews=105
In pratica a mè servirebbe un istruzione che mi aprisse di volta in volta
nel frame centrale la pagina dinamica riferita al corretto IDNews.
Spero di essere stato chiaro e di non averti incasinato ancora di più con
questo sproloquio.
Grazie del tuto interessamento.

se la tua pagina corretta è pippo.asp (con i 3 frame):
se apri direttamente il frame centrale onload del frame centrale metti
if(top.location==self.location) top.location='pippo.asp?IDNews=109';
Quando carichi pippo.asp vedi il parametro e carichi di conseguenza il frame
centrale

 document.write('<frame name="output" src="'+document.location.href+'?a">')
Non capisco cosa ci stia a fare il "?a". Così facendo, se io chiamo la
pagina col link:
<a href="
http://www.vinitaliani.it/news1.asp?IDNews=105
">link</a>
l'src del frame name="output" è come fosse:
"
http://www.vinitaliani.it/news1.asp?IDNews=105?a
"
quando invece dovresti interrogare il DB unicamente con IDNews=105.
Molto più semplicemente, prova a scrivere:
document.write('<frame name="output" src="'+document.location.href+'">')
o hai già provato?
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 o hai già provato?
Ho provato il tuo suggerimento il risultato è stranamente una pagina bianca
senza il minimo errore come si può vedere da questo link:
http://www.vinitaliani.it/news1.asp?IDNews=105
sai come posso dirgli in javascript di aggiungere a news.asp la parte
?IDNews=105
una cosa del genere document.write('<frame name="output"
src="'news.asp+document.location.search+'">')
solo che credo non sia corretto. Non sono molto bravo in javascript!

 ?IDNews=105
Sì (lo vedi fra un attimo), ma non serve: il tuo
"document.location.href" già contiene l'IDNews. Puoi verificarlo
semplicemente. Crea due pagine:
"pippo.htm" e "pluto.htm"
Nel body di pippo.htm scrivi:
<a href="pluto.htm?variabile">link</a>
e in pluto.htm:
<script language="javascript">
alert(document.location.href)
</script>
Quel che ne esce è:
UrlAssoluto/pluto.htm?variabile
Torniamo a noi.
Dài un'occhiata a un'alternativa di questo tipo (nell'index.html):
<title>
VINITALIANI.IT
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script language="javascript">
LS=location.search;
if (LS.indexOf("?")!=-1) {
aa="news1.asp"+LS;
} else {
aa="bottom.asp";
}
document.writeln('<frameset rows="120,*" cols="*" frameborder="NO"
border="0" framespacing="0">'); 
document.writeln('<frame name="input" scrolling="NO" noresize
src="top.asp" frameborder="NO">');
document.writeln('<frameset cols="185,*" frameborder="NO" border="0"
framespacing="0">');
document.writeln('<frame name="leftFrame" noresize scrolling="NO"
src="left-bar.asp" frameborder="NO">');
document.writeln('<frame name="output" src="'+aa+'" frameborder="NO"
scrolling="AUTO">');
</script>
E in tutte le pagine news1.asp:
<script>
LS=location.search;
if (
self.name
==
top.name
) { 
location.href="index.html"+LS; 
}
</script>
Se fa il suo dovere e ti convince magari si perfeziona, così è tirata
via.
