8 messaggi dal 13 agosto 2006
Ciao!

purtroppo ho un sito in asp gestito tramite i frame (top, laterale sx e corpo centrale)
Ultimamente è molto presente nei motori di ricerca Google, Yahoo, Virgilio e il problema sorge quando il motore di ricerca punta al mio sito ma solo nel frame centrale.

Ho pensato ad un codice da mettere all'inizio della mia pagina che individua da dove arriva la richiesta e se arriva dall'esterno allora ricarica la home
Ma come faccio?

Avete altre soluzioni

Lo so che mantenere il sito con i frame non è bello, ma non c'è il tempo di rifarlo tutto!

Attendo i vostri suggerimenti!

Grazie
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Una soluzione sarebbe quella di inserire un codice javascript nelle pagine "content".
Questo javascript verifica che window.top non sia vuoto, ovvero che la pagina richiamata non sia stata caricata SENZA il suo corretto frameset.
Se non è così allora deve ridirezionare alla pagina che carica il frameset sapendo di dover caricare come content la pagina richiesta.
Ovviamente questa soluzione non funziona nel caso in cui uno non abbia abilitato i javascript.

Fammi sapere come va ;)

www.padovaboy.it dal 2001 con furore :D
8 messaggi dal 13 agosto 2006
Avendo poca familiarità con la programmazione Java, hai un esempio da mostrarmi?
Ti ringrazio in anticipo
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ok
ma stai attento: javascript NON è Java!
Ora non ricordo il codice preciso.
Però facendo qualche prova puoi effettuare un controllo sulla pagina caricata.
Ti mostro il codice che ho messo su in velocità:

<script language="JavaScript">
<!--
//Questa funzione aggiunge funzioni all'evento Load del documento
function addLoadEvent(func) {   var oldonload = window.onload;   if (typeof window.onload != 'function') {     window.onload = func;   } else {     window.onload = function() {       oldonload();       func();     }   } }


//Questa è la funzione che verifica:
function checkWindowTop(){
  var urlIndex;
        //Qui recuperi la locazione del documento parent
        //Se viene richiamata direttamente la pagina in iframe
        //allora restituisce il percorso della pagina
        //se invece viene caricata all'interno di un frame
        //riporta il percorso della pagina che la racchiude
  var parentDocLoc = "" + window.parent.document.location;
  urlIndex = "index.html"; //pagina che contiene l'iframe
        //se il percorso non contiene la pagina "master" allora
  if (parentDocLoc.indexOf(urlIndex) == -1){
             //ridireziona
    document.location = '/index.html';
  }
}

//Qui agganci la funzione di verifica allo scatenarsi del load del documento
addLoadEvent(checkWindowTop)

//-->
</script>


Purtroppo con FireFox ha qualche problema...dovrei controllare meglio. Intanto dacci un occhio!

www.padovaboy.it dal 2001 con furore :D
8 messaggi dal 13 agosto 2006
fatto e la tua funzione javascript è corretta!
Ora quando si accede alla pagina dall'esterno, vengo dirottato sulla mia home page con i frame.
Il problema ora è che prima di arrivare alla home page vedo per un istante la pagina caricata inizialmente

Si può ovviare anche a questo problema?
Grazie
8 messaggi dal 13 agosto 2006
fatto e la tua funzione javascript è corretta!
Ora quando si accede alla pagina dall'esterno, vengo dirottato sulla mia home page con i frame.
Il problema ora è che prima di arrivare alla home page vedo per un istante la pagina caricata inizialmente

Si può ovviare anche a questo problema?
Grazie
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ciao!
In effetti deve essere fastidioso.
Prova a richiamare la mia funzione immediatamente.
Ovvero togli questa riga:

addLoadEvent(checkWindowTop)

e inserisci il resto tra l'header della pagina
e richiama subito checkWindowTop();

Questo dovrebbe far eseguire il codice appena viene interpretato senza aspettare l'intero caricamento della pagina.

Ottieni questo:
<head>
<title>pagina1</title>
<script language="JavaScript">
<!--
//Questa è la funzione che verifica:
function checkWindowTop(){
var urlIndex;
//Qui recuperi la locazione del documento parent
//Se viene richiamata direttamente la pagina in iframe
//allora restituisce il percorso della pagina
//se invece viene caricata all'interno di un frame
//riporta il percorso della pagina che la racchiude
var parentDocLoc = "" + window.parent.document.location;
urlIndex = "index.html"; //pagina che contiene l'iframe
//se il percorso non contiene la pagina "master" allora
if (parentDocLoc.indexOf(urlIndex) == -1){
//ridireziona
document.location = '/index.html';
}
}

checkWindowTop();
//-->
</script> 
</head>

www.padovaboy.it dal 2001 con furore :D
8 messaggi dal 13 agosto 2006
HO PROVATO IN LOCALE E FUNZIONA MOLTO BENE
ORA PROVO A PUBBLICARLO ON LINE

GRAZIE MILLE

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.