Ciao a tutti, è possibile realizzare un controllo che verifica se viene aperta una pagina singola, normalmente contenuta all'interno di un FRAME, ricarica tutto aprendo correttamente il sito ed indirizzare automaticamente alla pagina richiesta????
Ciao a tutti, è possibile realizzare un controllo che verifica se viene aperta una pagina singola, normalmente contenuta all'interno di un FRAME, ricarica tutto aprendo correttamente il sito ed indirizzare automaticamente alla pagina richiesta????
if(top.location.href == document.location.href) ...
Trovi il codice completo nelle raccolte di script o mediante una ricerca nel forum (e` gia` stato affrontato).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
non avendo trovato nulla, ho provsto così:
if (top.location.href == document.location.href) {
var page= location.href;
location.href = "http://"+ location.hostname +"/sito.asp";
parent.frame_main.location.href = page;
}
ma automaticamente non mi va alla pagina che vorrei, cioò a quelle linkata inizialmente
if (top.location.href == document.location.href) {
var page= location.href;
location.href = "http://"+ location.hostname +"/sito.asp";
parent.frame_main.location.href = page;
}
Non si puo` fare cosi`.
Quando ricarichi il frameset il contenuto dei frame viene perso, e si deve quindi passare come parametro la pagina da aprire dentro il frameset.
Puoi anche vedere questo thread, ma il riferimento del link che avevo dato io non c'e` piu`.
Quindi in ogni pagina (interna al frameset):
if(top.location.href == document.location.href) {
top.location.href="FRAMESET.htm?frame1=document.lo cation.href;
}
Nella pagina del frame1 di default, ci devi mettere uno script di questo tipo:
La costante frame1 puo` assumere il nome che preferisci (ma devi cambiarlo in tutti i punti).codice:var dest = ""; if(top.location.search){ var src1 = top.location.search.substr(1); var src2 = src1.split("&"); for(var i=0; i<src2.length; i++) { var src3 = src2[i].split("="); if(src3[0] == 'frame1') { dest = src3[1]; } } } if(dest != "") { document.location.href = dest; }
In linea di massima dovrebbe essere un nome simile al nome del tuo frame (ma non uguale).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Mi dice che la pagina non è disponibile:
Infatti come indirizza restituisce:
http://127.0.0.1/sito.asp?fr_main=do....location.href
in ogni pagina ho inserito:
// verifica frame
if(top.location.href == document.location.href) {
top.location.href="http://"+ location.hostname +"/sito.asp?fr_main=document.location.href";
}
mentre nella pagina di default del frame dove deve essere visualizzata la giusta pagina:
// verifica frame
var dest = "";
if(top.location.search){
var src1 = top.location.search.substr(1);
var src2 = src1.split("&");
for(var i=0; i<src2.length; i++) {
var src3 = src2[i].split("=");
if(src3[0] == 'fr_main') {
dest = src3[1];
}
}
}
if(dest != "") {
alert(dest);
document.location.href = dest;
}
ho trovato l'errore:
anzichè:codice:// verifica frame if(top.location.href == document.location.href) { top.location.href="http://"+ location.hostname +"/sito.asp?fr_main="+document.location.href+""; }
codice:// verifica frame if(top.location.href == document.location.href) { top.location.href="http://"+ location.hostname +"/sito.asp?fr_main=document.location.href"; }
Domanda:
è possibile fare scomparire dalla barra indirizzo il risultato dell'operzione di reindirizzamento, che rischia di essere una cosa lunghissima?
Nel mio caso è divantato tipo:
http://127.0.0.1/sito.asp?fr_main=ht...cizi/index.asp
Puoi mettere solo il nome della pagina, se il resto del path non cambia.
Devi modificare le variabili di conseguenza.
Per informazione vedi la struttura dell'oggetto location su qualsiasi reference (ad esempio http://www.devguru.com/technologies/...ipt_index.html )
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
...ancora...
se non faccio in modo che scompaia poi l'indirizzo della barra indirizzi, succede, che se non faccio questa modifica:
anzichè:codice:if(dest != "") && (dest != "main.asp") {
quando poi voglio andare nella pagina di default mi rimbalza nella pagina indicata nella bar!codice:if(dest != ""){
Se non c'è nulla, oltre al cammino originale come :
http://127.0.0.1/sito.asp
funziona perfettamente senza la modifica!
Ho guarda to su GURU ma non ho idea di cosa fare!
Poi cmq con
mi accorgo che non funziona nemmo bene!codice:if(dest != "") && (dest != "main.asp") {
Un passo indietro. Forse non mi sono spiegato bene.
Se questo link ti pare troppo lungo
http://127.0.0.1/sito.asp?fr_main=ht...cizi/index.asp
ti puo` bastare http://127.0.0.1/sito.asp?fr_main=/Esercizi/index.asp
Per ricavare solo l'ultima parte dell'indirizzo, invece che leggere window.location.href puoi leggere window.location.pathname
In tal caso la parte di script della pagina default non dovrebbe venir modificata (credo, ma fai delle prove).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati