Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [frame]url di una pagina specifa all'interno di un frame

    Scusate ho una domanda un pò da inesperta...

    Ho un sito suddiviso in frame, di cui uno contiene il menù.

    E' possibile fornire ad un amico il link di una pagina specifica del mio sito senza però perdere il frameset?

    Mi spiego.. se una pagina del mio sito è http://miosito.it/frame2.htm
    quando la visualizzo cercandola sul menù continuo ad avere nella barra dei collegamenti l'url http://miosito.it

    Se però fornisco questo link ovviamente la persona nn visualizza la pagina voluta, ma la pagina http://miosito.it/index.htm con tutti i frame.

    Il mio scopo è sapere se esiste una dicitura per indirizzarsi alla pagina frame2.htm senza perdere la visualizzazione degli altri frame.

    (non so, magari qlcs di simile ai segnalibri... http://ecc...#frame2.htm)

    Spero abbiate capito...

    grazie!! ciao ciao

  2. #2
    Oppure al limite esiste un sistema per fare in modo che una pagina che viene aperta senza il suo frame menu si accorga che esso manca e ricarica automaticamente tale pagina ma con tutti i frames necessari?

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    1) per quanto riguarda la possibilità di entrar in una pagina interna senza perdere il frameset principale non puoi farci nulla... i frames sono sconsigliati per diversi motivi tra cui quello di nn potersi riferire ad una pagina interna. La cosa migliore sarebbe riprogettare il sito utilizzando gli iframe in line <iframe> o le inclusioni lato server per includere menu e header...

    2) Per la seconda domanda qualcosa si può fare ammesso che il client abbia javascript attivato (cioè nel 90% dei casi): basta scrivere il seguente frammento di codice nelle pagine interne all'interno dell'header:

    codice:
    <head>
      <script type="text/javascript">
      if (self == top) {
        top.location = "index_frameset.html";
      }
      </script>
    </head>
    dove al posto di index_frameset.html sostituisci con il nome del file che contiene il frameset.

    Se hai dubbi fammi sapere...
    Ciauz
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    grazie mille!

    1) hai ragione, sto scoprendo poco a poco html, php ecc.. e mi rendo conto che è molto meglio fare come dici al punto primo.

    2) per il sito ormai fatto in frames provo ad applicare questa cosa, se funziona ti innalzerò un totem!
    Ciau!!Grazie!!

  5. #5

    Ecco la soluzione!!

    Ho trovato un copdice javascript da aggiungere alle pagine e alla pagina del frameset che risponde appieno al mio problema. Si basa sul consiglio che mi hai dato ma questo funziona :P

    Lo posto così altri possono usufruirne.

    ==================================================
    Questa sequenza assicura che le sottopagine non verranno caricate al di fuori del frameset.

    Se un visitatore inserisce l'URL di una sottopagina - la nostra sequenza farà sì che il frameset venga caricato con la sottopagina in uno dei frame.

    Sarà necessario inserire una breve sequenza sia sulla pagina del frameset sia su ognuna delle sottopagine.

    Quello che succede realmente è questo:

    Se una sottopagina viene caricata al di fuori del frameset, la sequenza sulla sottopagina lo rileverà, e caricherà invece il frameset.

    Quando il frameset viene caricato, la sequenza sul frameset caricherà la relativa sottopagina nel frame window corretto.

    E' necessarioi inserire una breve sequenza nella sezione <head> delle tue sottopagine e della tua pagina frameset.


    IL CODICE PER LE SOTTOPAGINE
    La sequenza da copiare e incollare sulle sottopagine é questa:
    codice:
    <HEAD>
    
    <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
    
    <!--
    var correct_frame = 0 + (parent.nav ? 1 : 0);
    if (self == top || !correct_frame)
    top.location.href = 'framespage.htm?subpage.htm';
    //-->
    
    </SCRIPT>
    </HEAD>
    Personalizza questa riga per adattarla alle tue pagine:
    top.location.href = 'framespage.htm?subpage.htm';


    framespage.htm è il nome della tua pagina dei frame.
    subpage.htm è la pagina dove incollerai il codice.



    Se la sottopagina si chiamasse mypage.htm e la pagina dei frames si chiamasse index.htm, il link sarebbe:
    top.location.href = 'index.html?mypage.htm';




    COME FUNZIONA

    Questa riga rileva se la pagina è caricata o meno in un frameset:
    if (self == top || !correct_frame)


    Se la pagina non è caricata in un frameset, verrà eseguito il comando su questa riga:
    top.location.href = 'framespage.htm?subpage.htm';


    Questo fa aprire la pagina frameset come se tu avessi inserito http://www.yourdomain.com/framespage.htm?subpage
    nella casella url del tuo browser.


    Il trucco dell'intera sequenza è che la sequenza nella framespage può accedere a ciò che viene inserito subito dopo il simbolo ? attraverso l'oggetto window.location.search, incorporato in javascript.

    Questo è il modo in cui vengono passate le informazioni per indicare alla pagina del frameset quale sottopagina caricare.



    IL CODICE PER LA PAGINA FRAMESET
    codice:
    Questa è la sequenza da copiare e incollare sulla pagina dei frame:
    <HTML>
    <HEAD>
    <TITLE>MyFramesPage</TITLE>
    </HEAD>
    
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var correct_frame = true;
    document.write('<FRAMESET COLS="50%,50%">');
    document.write('<FRAME SRC="navpage.htm" NAME="nav">');
    document.write('<FRAME SRC="',(location.search ?
    location.search.substring(1):"defaultsub.htm"),'"" NAME="display">');
    document.write('<\/FRAMESET>');
    //-->
    </SCRIPT>
    
    </HTML>
    Personalizza i valori del frameset per adattarli alla tua pagina.

    Ricordati di includere tutte le dichiarazioni relative al frameset in enunciati del tipo document.write - nella stessa maniera in cui il frame "nav" viene definito nell'esempio qui sopra.


    Il frame window che caricherà le sottopagine dovrà essere così:
    codice:
    document.write('<FRAME SRC="',(location.search ? location.search.substring(1):"defaultsub.htm"),'"" NAME="display">');
    Valori della riga qui sopra che possono essere cambiati secondo le proprie esigenze:

    * defaultsub.htm è la pagina di default che viene aperta se il frameset viene aperto normalmente (Cioè: Se il frameset non viene caricato dalla sequenza in una sottopagina).


    * display è il nome del frame. Puoi scegliere qualsiasi nome per il frame.




    COME FUNZIONA

    Questa funzione è in grado di stabilire se un valore è stato passato alla pagina frameset che segue un simbolo ? nell'url:
    location.search ? location.search.substring(1) : "defaultsub.htm")


    Se un valore viene inserito dopo il simbolo ? nell'url, la funzione rimanda allora il valore. Altrimenti rimanda defaultsub.htm - il nome della pagina di default da caricare.


    Per sempllificare, sostituiamo l'output di questa funzione con il nome FunctionGeneratedPage.htm (per questo esempio, non ha importanza se è una pagina default o una sottopagina).

    Possiamo quindi sostituire la dichiarazione originale del frame:
    codice:
    <FRAME SRC="',location.search ? location.search.substring(1) : "defaultsub.htm"),'"" NAME="display">
    con questa semplice dichiarazione, che mostra come la riga apparirà nel browser dopo che la funzione è stata decifrata:
    codice:
    <FRAME SRC="',FunctionGeneratedPage.htm,'"" NAME="display">

    In questo modo, ciò che succede si vede in maniera più ovvia ed immediata.

    La sequenza raccoglie il valore passato da una sottopagina, oppure il nome della sottopagina di default.
    E infine aggiunge al frame l'attributo relativo al nome "display".


    Anche se non è una pagina di default dichiarata nel frameset, quando proviamo ad aprirla, verrà aperta all'interno del frameset.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.