Newsgroup: it.comp.lang.javascript
Titolo: E' fattibile? (capire se sono in un frame e agire di conseguenza)

Scusate se la domanda che segue e' banale,
ma il javascript mi sta incuriosendo molto e sto valutando
se vale la pena che io lo approfondisca
(a parte fare rollover e altre cose "banali"
per le quali basta copiare un po' di esempi e usare
il buon senso del vecchio programmatore...)
Quello che mi stavo chiedendo e' se usando
javascript (o qualche altro medoto abbastanza portabile) e' possibile
avere il seguente comportamento:
Io ho una pagina principale, diciamo
miomain.html che e' un frameset che richiama inizialmente
2  pagine html, diciamo uno.html e due.html con il
loro bel target etc.etc.
Quello che mi chiedo e' se e' possibile infilare del codice javascript
nelle  pagine uno.html e due.html in modo che se
qualcuno cerca di caricarle come pagine principali (target top) e non
come frame nel loro target specifico
(perche' ad esempio ha trovato il link diretto a uno.html
grazie a google) io possa forzare il caricamento di miomain.html
invece di uno.html o due.html.
Questo perche' appunto vorrei evitare che le persone
attraverso google vadano a finire nei miei frame anziche'
nelle pagine principali che li richiamano.
Non vi chiedo di scrivermi un programma, ma di dirmi
se secondo voi e' fattibile e caso mai quale "parola chiave"
posso cercare in un manuale o con Google per andare nella
direzione giusta.
spero di essermi spiegato, e perdonate l'ignoranza.
ciao e grazie,
g.

 direzione giusta.
Questa e' l'imbeccata. Come noterai tu, questo tipo di codice non fa altro
che fare un mero redirect a miomain.html.
La cosa da fare sarebbe che caricasse la struttura a frameset con la pagina
che l'utente aveva provato *effettivamente* a caricare.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Nei film americani, qualsiasi problema che venga considerato
sufficientemente catastrofico, puo' essere risolto facendo esplodere uno
o piu' ordigni nucleari" (ZER0 & Cosimo)
Now playing: nothing

 che l'utente aveva provato *effettivamente* a caricare.
Si, ci avevo pensato. Naturalmente una soluzione facile ma noiosa
l'ho individuata... farmi delle pagine con frameset opportuni e caricare
quelli invece di mioman.html. La cosa e' fattibile perche' non
ho diecimila pagine, e posso comunque scrivermi un programma in C che
mi crea/modifica le pagine come le voglio io.
Poi vedro' se esiste un'ulteriore scorciatoia, grazie,
ciao,
g.

 mi crea/modifica le pagine come le voglio io.
X( in C?? perche' farsi del male? :))
ci sono strumenti piu' adatti a modificare testi, ad es. il Perl
--
artemis.alpeia
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Poi vedro' se esiste un'ulteriore scorciatoia, grazie,
Se puoi usare un linguaggio server side (ASP, PHP, JSP, CGI in generis) la
cosa viene anche piuttosto pulita; altrimenti e' ugualmente fattibile solo
lato client.
Un ulteriore imbeccata: guarda nella reference il metodo "write"
dell'oggetto document; e la proprieta' "search" dell'oggetto "location".
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
La vita e' una tempesta, ma prenderla nel culo e' un lampo.
(B. Grillo)
Now playing: nothing

 ci sono strumenti piu' adatti a modificare testi, ad es. il Perl
Si, pero' arrivato a quasi 40 anni, e programmando in vari modi
da circa 25,
ho deciso che alla mia eta' di solito faccio prima ad
usare un linguaggio che conosco gia' ragionevolmente bene piuttosto
che dovermi studiare un linguaggio ex-novo (tipo il Perl).
Anzi, in questo caso, se devo fare un po' di modifiche testuali in una
manciata di files posso addirittura fare prima usando i comandi della
shell sotto linux... :-)
ciao e grazie,
g.

 dell'oggetto document; e la proprieta' "search" dell'oggetto "location".
Grazie di nuovo,
ciao,
g.

 Grazie di nuovo,
Di niente, se hai bisogno chiedi pure.
La reference di js, in caso tu non ce l'abbia, puoi trovarla qui:
http://devedge.netscape.com/central/javascript/
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)
Now playing: nothing

 
http://devedge.netscape.com/central/javascript/
ottimo. Penso che per motivi di compatibilita' con
i vecchi browser iniziero' a leggermi i PDF dei manuali (ref+guide)
della versione 1.3 client: sono appena 697+309 paginette....
ciao,
g.

 shell sotto linux... :-)
perfetto, uno script bash
--
#!/usr/bin/artemis.alpeia


 invece di uno.html o due.html.
Certo che sì.
Prendiamo come frameset INDEX.HTML
e come frames PAGINA1.HTM e PAGINA2.HTM
Ora, questo sarà il contenuto di INDEX.HTML:
<frameset rows="40,*">
<frame name="area1" src="pagina1.htm">')
<frame name="area2" src="pagina2.htm">')
</frameset>
Questo sarà lo script da inserire dentro PAGINA1.HTM
e dentro tutte le pagine che andranno ad occupare il suo posto:
if (self==top) {
document.write('<frameset rows="40,*">');
document.write('<frame name="area1" src='+document.location.href+'?a>');
document.write('<frame name="area2" src="pagina2.htm">');
document.write('</frameset>')
}
Questo sarà lo script da inserire dentro PAGINA2.HTM
e dentro tutte le pagine che andranno ad occupare il suo posto:
if (self==top) {
document.write('<frameset rows="40,*">');
document.write('<frame name="area1" src="pagina1.htm">');
document.write('<frame name="area2" src='+document.location.href+'?a>');
document.write('</frameset>')
}
Sono sicuro che il metodo è corretto perché l'ho usato parecchie volte
(specie da quando ZER0 me l'aveva fatto funzionare :D)
se non gira avrò scritto qualche cappellata con gli apici, dimmelo che si cerca l'errore.
Se hai dubbi chiedi pure!
Ovviamente ti conviene caricare gli script in un js esterno.
MaRoK

 della versione 1.3 client: 
Perfetto, e' proprio quella che devi studiare. :)
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
..ma in effetti il concetto di WYSYWYG (quello che vedi e' quello che
ottieni)
si applica ai computer malissimo, cosi' come si applica alle donne...
(The Real Programmer)
Now playing: nothing