Aprire una pagina nel “suo” frameset

Problema:
ho fatto un sito usando i frames ed ora che Google mi ha indicizzato i miei visitatori arrivano al sito passando per le pagine che dovrebbero essere contenute in un frameset, vedendole però singolarmente ciò al di fuori del frame contenitore.

Soluzione

Per ovviare al problema si può usare Javascript, facendo si che quando una pagina viene aperta fuori dal suo frameset, questa lo richiami, indicandogli anche quale pagina visualizzare al proprio interno (cioè essa stessa).

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var thispage;
    var url=location.href;    
    var pos1, pos2, pos;
    var to;

    // are we not in a frameset
    if (top.frames.length == 0) 
        {
        // http slashes, file slashes on Unix
        pos1 = url.lastIndexOf( '/' );
        // file slashes on Windows
        pos2 = url.lastIndexOf( '' );

        pos = (pos2>pos1) ? pos2 : pos1;

        if ( pos != -1 )
            {
            thispage = url.substring( pos + 1 );
            to = "index.htm?" + thispage;

            // on a modern browser we can use location.replace to rewrite the browser 
            // history, otherwise just set the location
            ver = parseInt(navigator.appVersion, 10);

            if ( ((navigator.appName == "Netscape") && (ver >= 3)) ||
                 ((navigator.appName == "Microsoft Internet Explorer") && (ver >= 4)) )
                location.replace(to);
            else
                location = to;
            };
        }
    //-->
    </SCRIPT>

Siccome con WordPress ho sempre problemi a postare codice, scaricate i file zippati se volete vedere i due file di esempio: frame buster javascript

Come funziona?

Praticamente il frameset viene costruito in modo “dinamico” tramite JS.
Bisogna personalizzare var rightsrc= a cui bisogna indicare la pagina che vorremo contenuta di default, e ovviamente modificare il frameset secondo l’esigenza.

Il codice per la pagina “contenuta” va bene com’è, e si può usare per più pagine.

Ricordiamoci solo che il frameset deve chiamarsi index.htm, oppure bisogna modificare il codice anche in questo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

You can add images to your comment by clicking here.