Newsgroup: it.comp.lang.javascript
Titolo: Check frame

metti questo script:
if(top.location.href != "http://..../index.html")
 top.location.href = "index.html"

  top.location.href = "index.html"
Grazie mille per l'aiuto, le due righe funzionano.. in parte: nel senso
che effettivamente caricano l'index, ma nel frame principale viene
visualizzata la pagina di presentazione e non quella da cui è partito lo
script.
C'è un modo per risolvere il problema?
Grazie ancora,
 ciao..
-- 
l_done
Email: 
qgin...@tiscalinet.it
Icq#31432091
PGP 5.5.3i RSA Key Available
PGP Key Fingerprint: 8166 F014 1828 3A47  0294 6A84 4ED8 5976

Devi fare un bella modifica del codice:
Al posto del codice di prima metti questo;
if(top.location.href != "index.html")
    top.location.href="index.html?nomefile"
Poi nel codice di index.html metti queste righe:
<FRAMESET  ...>
    <FRAME NAME="frame1" ...>
    <FRAME NAME="frame2" ...>
    ...
</FRAMESET>
<script language="JavaScript">
<!--
if(location.search != "")
    top.frame1.location.href = location.search + ".html"
//-->
</script>
Ovviamente al posto dei puntini di sospensione ci metti il codice che c'era
già prima :)

 top.location.href = "index.html"
e mettendo questo codice:
if (document.location == parent.document.location)
{
	document.location="index.htm"
}
potrebbero uscire problemi ?
L'ho inserito questa sera nella mia home-page, proprio per evitare
questo tipo di problemi. Speriamo funzioni anche in casi particolari.
Cosa ne dite ?

 wrote:
Io ho lo stesso problema, ho provato il codice seguente ma non sembra
funzionare, intanto top.location.href mi ritorna tutto l'URL e non
solo il nome della pagina poi location.search non ritorna nomefile +
".htm" ma ci aggiunge un ? prima, così il comando viene ignorato.
Forse sto sparando immani cavolate o effettivamente lo script deve
essere messo a punto?
Grazie.


Questo script l'ho scritto al volo, e non l'ho mai provato. Se
location.search restitutisce anche il ? di può sempre toglierlo ...
top.location.href restituisce tutto l'URL ('scus mi)

 già prima :)
In Netscape 4.5 non funziona, mi carica la pagina principale e basta.
In Opera 3.51 carica la pagina principale, poi torna al file di
partenza.
Ti posto il codice così come l'ho messo io, magari ho sbagliato
qualcosa..
================
home.htm (il file indice):
[...]
<frameset cols="133,1*" border="0" framespacing="0" frameborder="NO"> 
  <frameset rows="1*,35" border="0" framespacing="0" frameborder="NO"> 
    <frame src="navig.htm" name="Nav" frameborder="NO" marginheight="5"
marginwidth="5" noresize>
  <frame src="iedm.htm" frameborder="NO" name="MainIEDM">
</frameset>
<script language="JavaScript">
<!--
if(location.search != "")
    top.MainIEDM.location.href = location.search + ".htm"
//-->
</script>
[...]
================
iscriz.htm (uno dei file dipendenti):
[...]
<script language="JavaScript">
<!--
if(top.location.href != "home.htm")
    top.location.href="home.htm?iscriz" [ho provato pure iscriz.htm]
//-->
</script>
[...]
================
Una precisazione: il file home.htm setta 2 frame, uno per la navigazione
e uno principale; in quello principale (MainIEDM) viene caricata, a
seconda della scelta dell'utente, una pagina (per esempio iscr.htm) che
definisce a sua volta due sotto-frame nei quali vengono caricate due
pagine diverse, una principale e una che è un'ulteriore barra di
navigazione (per esempio iscriz.htm e fnav.htm). Lo script..
if(top.location.href != "home.htm")
    top.location.href="home.htm?iscriz" [ho provato pure iscriz.htm]
..ho provato a inserirlo sia in iscr.htm (la pagina che definisce i
frame) sia, alternativamente, in iscriz e fnav.htm, senza ottenere alcun
risultato.
Comincio a pensare che sarebbe più comodo lasciare solo lo script che si
occupa esclusivamente di caricare home.htm, magari preceduto da un
messaggio che avverte della cosa e che magari dà un consiglio su come
arrivare dalla pag. principale a quella cui si era puntato. In questo
caso
sarebbe corretta una cosa tipo:
if(top.location.href != "home.htm")
   { alert("...") 
    top.location.href="home.htm" }
L'uso delle graffe l'ho improvvisato qui al momento, non conosco
praticamente nulla di javascript e so solo qualcosina di turbo pascal :)
Grazie, ciao




Bene, ma se invece di index.htm?nomefile tolgo il ? il browser non
capisce più niente, mi dice che la pagina index.htmnomefile non
esiste. Risolto questo problema penso che per il resto non vi siano
difficoltà. Aiutami perchè di javascript ci capisco poco ma questo
esempio serve tantissimo anche a me.
Grazie.

Questo tipo di problema mi ha interessato parecchio e mi sono messo a fare
uno bellissimo script per il mio sito che toglieva il primo carattere (il ?)
da location.search e poi mi apriva la pagina nell'altro frame.
Tutto bellissimo finché l'ho testato con Netscape (di solito più 'duro'
nelle sintassi).
Quasi per pura formalità ho lanciato anche IE che però non ne ha voluto
sapere (la variabile location.search sempre nulla).
Praticamente ho scoperto che IE non consente di passare nessun tipo di
stringa ad un documento html (l'ho testato sul mio HD, non in rete)
Scrivere per esempio questo:
<A HREF="pagina.html?pippone">pippone</A>
e cliccarci sopra comporta l'apertura si pagina.html, ma location.search non
vale "?pippone", al contrario di NS. (vedasi anche la barra degli indirizzi)
Questo conferma che NS, anche se più rigido, SARA' SEMPRE MEGLIO DI IE (a
meno che qualcuno mi confermi che in rete IE funzia).
CIAO :)
la mosca nella rete

 wrote:
Ciao,
ti dispiacerebbe postarmi il codice che hai usato per ottenere
l'effetto descritto in questo messaggio?
Con Netscape, usando il server Apache attraverso localhost riesco a
passare un valore usando per esempio index.htm?parametro e lo leggo
poi usando location.search.substring(1)
Il mio problema è che la pagina index è un frameset, dunque se per
esempio la mia pagina è fatta così:
<frameset .....>
....
....
</frameset>
quando inserisco il codice in questo punto, esso viene totalmente
ignorato. Come posso fare?
Questo script mi interessa molto e anche se funziona solo con Netscape
penso valga la pena implementarlo.
Grazie per l'attenzione.


...


Beh, di solito rispondo a tutti i messaggi a cui ho una risposta (magari
perché ci sono già passato).
Non sono mica un Dio del JS, e da buon autodidatta ho anch'io i miei buchi.
Poi, poi: non vorrai mica confrontare NS a betmax??? Anche un neofita impara
presto a conoscere NS (ci sono bottoni sparsi per tutta la rete). Scaricare
NS o procurarselo non comporta si certo l'impegno finanziario di comprarsi
un nuovo apparecchio e buttare via il vecchio per una differenza qualitativa
non eccezionale.
Io ho NS 4.05 e IE 4.0, e non ci sono paragoni. Dico se provi NS non lo
lasci più, ti accorgi subito della sua velocità.
Poi magari ti procuri IE 5.0, ti accorgi che è pieno di bachi ....
Prima o dopo tutti i nodi vengono al pettine.

<script language="JavaScript>
<!--
if(location.search != "")
    location.href = location.search.substring(1, location.search.length)
//-->
</script>



Ok, fino a qui ci sono arrivato, ma come devo fare per far si che
quando la pagina index.htm viene aperta (pagina contenente
esclusivamente il frameset) il codice mi venga letto e interpretato?
lo potrei inserire nella sezione <head> ma lì il frameset non è ancora
stato definito e dunque non posso indirizzare una pagina verso un
frame con un determinato nome. Ho già fatto molte prove ma tutte senza
risultati. Please HELP ME !
Grazie.

Certo NS sarà migliore anche perchè è da una vita sul mercato ed ha avuto
tempo di migliorare sempre il suo prodotto. Ma se ti guardi intorno mi sa
che prima o poi sparirà la parola software e verrà sostituita dal "sinonimo"
Microsoft.
Questo non è bello, nessun monopolio che non permette d scegliere lo è, ma
in informatica questo porta anche grossi vantaggi, come ho già detto io sono
a favore degli standard, che poi sono il segreto dell'evoluzione, quindi in
fondo mi sta bene così.
PS Non è che sai dirmi qualcosa riguardo al messaggio che ho postato sullo
shopping cart?
Ciao

Non so se lo sai, ma esiste un ente (il w3c) che è predisposto a redigere
gli standard dell'HTML (compreso la parte dinamica).
Sia Netscape che Microsoft riconoscono il w3c come 'superpartes', e tutto
quello che dice viene sempre recepito dai due.
Nulla vieta però a Microsoft a fare delle aggiunte, però nulla vieta a noi
web master di fregarcene ed usare solo le specifiche w3c.
Ti ricordo che il w3c con la versione HTML 3.2 ha riconosciuto come
linguaggio di script il JavaScript secondo NS (non il VBScript, almeno non
ancora) e i fogli di stile .CSS (difatti sono una delle poche cose che
funziano bene sia su NS che IE).

Se non sbaglio il w3c ha stabilito l'8 dicembre '98 che il nuovo standard è
l'html 4 con tutte le specifiche Microsoft, compresi i fogli di stile CSS
ecc.
Non ho visto il sito w3c ma l'ho sentito su qualche NG, se hai voglia
verifica.
Ciao.

già prima :)
RIPROPONGO LA DOMANDA.
Io sono riuscito a passare il nome della pagina da caricare nel
frameset con le istruzioni di cui ai post precendenti, l'unico mio
problema è quello di inserire un javascript nella pagina index.htm
contenente un frameset. Il codice mi viene bellamente ignorato dal
browser. L'unico modo per farlo leggere è quello di metterlo fra
<head>
</head>
ma a quel punto il frameset non è ancora stato definito e non posso
indirizzare la pagina presente il location.search ad un frame.
Come posso fare per risolvere tale problema?
Aiutatemi VI PREGO !!!!!

 Come posso fare per risolvere tale problema?
Hai provato a mettere il codice in una funzione che viene richiamata al
caricamento della pagina?
In pratica:
<head>
...
<script>
...
function funzione(){
    ... qui va la tua funzione
}
</script>
</head>
<body onLoad="funzione()">
In questo modo la funzione viene avviata quando il browser ha finito di
caricare la pagina.
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

 risiede uno script? document.URL mi ritorna tutto l'URL.
Beh, bisogna studiarci un po' ma dovrebbe essere fattibile. Magari se trovo
un po' di tempo ti faccio sapere.
