Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [JS] Guida alla ricostruzione del layout

    Prendendo atto del fatto che è una richiesta espressa con frequenza (anche dal sottoscritto in passato), pubblico qui un javascript che serve per ricostruire il layout di un sito a frame/iframe qualora venisse richiamata una pagina interna.

    L'utilità è palese: arrivando a una pagina interna (magari da un motore di ricerca), questo js ricostruisce la corretta struttura del frameset ponendo nel frame "del contenuto" la pagina, e ricaricando nel contempo l'altro (o gli altri) frame contenenti menu di navigazione, barre laterali ecc.

    Bene, si comincia! Questo esempio presuppone che il layout consista in un un singolo iframe centrale dove caricare i contenuti, mentre il menu è direttamente nel codice dell'index.
    Quindi apriamo index.htm, individuiamo il codice del frameset (o dell'iframe), che andremo a sostituire con:

    codice:
    <script type="text/javascript">
    
    var pagdef = 'pagina1.htm';
    /* pagina che deve aprirsi normalmente nell'iframe */
    var larghezza = 640 
    var altezza = 300 
    /* Questi valori possono anche essere espressi rispetto alle
    misure disponibili a una data risoluzione, così:*/
    /* var altezza=((screen.height)/2)-300; */
    
    var pagstrin = location.search.substr(1);
    var NS4 = (document.layers) ? true : false ;
    if((location.search.substr(1)) == ''){pagina = pagdef;}
    else{pagina = pagstrin;}
    if(NS4){
    document.write('<ilayer id="d1" width="'+larghezza+' height="'+altezza+'">');
    document.write('<layer id="d2" src="'+pagina+'" width="'+larghezza+'"');
    document.write('height="'+altezza+'"><\/layer><\/ilayer>');}
    else{
    document.write('<iframe src="'+pagina+'" name="main"');
    document.write('width="'+larghezza+'" height="'+altezza+'"><\/iframe>');}
        </SCRIPT>
    Cosa fa questo? Semplicemente scrive la struttura dell'iframe (frameset) attraverso JS, per poterla poi richiamare cambiando la variabile PAGINA nel caso la richiesta arrivi da una pagina esterna.
    Come vediamo, fa anche un controllo di browser: se trova netscape, usa il tag ILAYER (ma questo controllo può anche essere cancellato)

    Ok, così ci apriamo la nostra index con la pagina di default (qui pagina1.htm) nell'iframe / frameset.

    Le pagine esterne dovranno contenere questo codice:
    codice:
    <script type="text/javascript">
    if (window.top == window.self) {
    location.href='index.htm?'+document.URL }
    </script>
    Che, in parole povere, dice: se io sono aperta in modalità stand-alone, vatti a prendere la index, e metti il mio nome (di pagina) al posto del valore di pagina principale.

    Fin qui abbiamo visto l'esempio nel caso dell'iframe. Nel caso del frameset, basta andare a cambiare il codice nella index, sostituendo in document.write('....') il codice per l'iframe con i tag del frameset (con le opportune modifiche: src="'+pagina+'" nel frame del contenuto)

    L'esempio completo in zip è disponibile per il download sul sito in firma, seguendo RISORSE > GLI SCRIPT CHE HO USATO, alla voce RICOSTRUIRE IL LAYOUT

    ------------------------------

    L'utilizzo di questo script presenta anche altre due caratteristiche, che possono essere vantaggi o svantaggi a seconda dei punti di vista:

    1) L'url visualizzato richiamando solo la index sarà sempre e comunque www.nomesito.it o nomesito.it/index.htm(php)
    A meno che non venga richiamata una pagina esterna, nel caso sarà: http://www.sito.it/index.htm?http://....it/pagina.htm
    e tale rimarrà anche nel caso si cambi pagina caricata nel frameset. Se qualcuno ha qualche idea per evitarlo, ben venga, io adesso non ho tempo di lavorarci

    2) da ciò deriva che il codice visualizzato (tramite menu VISUALIZZA > HTML del browser) sarà sempre e comunque quello della index.

    Spero di essere stato utile!

    Keywords: layout, ricostruire, richiamare, menu, frameset, iframe, struttura, javascript

  2. #2

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    lo script delle pagine esterne sta dentro l'head o in body?


    EDIT ------------> grande problema. Per mandarlo al frame, prima utilizzato target="idframe"
    adesso cosa uso per mandare un link al frame?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    24
    Originariamente inviato da Vi *4*
    grazie
    Ciao,

    lo script nelle pagine "esterne", cioè le pagine che vanno dentro l'iframe, va messo in head. Consiglio di metterlo in un file esterno.

    Per quanto riguarda i link:

    1) li puoi fare come hai sempre fatto mettendo il target. In questo caso l'iframe funzionerà come al solito. Mentre in Netscape 4, l'unico che supporta ilayer, la pagina non verrà cambiata. Considera però che netscape 4 non lo usa più nessuno e tutti i browsers attuali supportano <ifrane>.
    Lo script è vecchio, l'ultima versione rislae al 2003, questo spiega la scelta di considerare ancora netscape 4.

    2) Fai dei normalissimi link senza mettere nessun target. In questo caso lo script nelle pagine "orfane" si attiverà e vedrai riaprirsi la pagina con nell'iframe o nell'ilayer (per NS4) la pagina che hai richiamato.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    24

    Re: [JS] Guida alla ricostruzione del layout

    Originariamente inviato da Petro_suse91

    Spero di essere stato utile!
    penso di si...

    Però devo dirti che non mi pare del tutto corretto riportare uno script creato da altri, rimuovendo i riferimenti all'autore.
    Hai aggiunto una variabile, ma lo script nella pratica è nella sostanza è sempre lo stesso, quindi non è corretto rimuovere i riferimenti.

    Questo script lo conosco molto bene, l'avevo scritto io, e l'ho riconosciuto subito. Ti posto anche il link alla pagina dove lo hai preso, così potrai notare che nella versione originale del 2003 c'erano i riferimenti alll'autore. L'essere liberamente utilizzabile non vuol dire che si possano rimuovere i riferimenti.
    Ecco la pagina:
    http://www.ilmioforum.com/cgi-bin/fo...agdef#pid37904

    come si può vedere, lo script da te postato è la parte da mettere nel body di uno script che fa anche altro.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    grazie dell'aiuto!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    ultima cosa (e vi lascio in pace )

    non conosco bene il linguaggio javascript, ma come fare perchè questo frame abbia un bordo colorato di un px?

  10. #10
    Ciao a tutti ho seguito questo consiglio ed ho risolto il problema ma ne ho creato un'altro

    io sceglievo il contenuto dell'iframe da una select in questo modo
    codice:
         doc.body.window.location.href = url;
             }
             else
             {
                window.contenuto.location.href = url;
             }
          }
          else
          {
            window.contenuto.location.href = url;
          }
          document.GoMenuForm3.GoMenu.selectedIndex=0;
       }
    }
    dove contenuto era il nome dell'iframe
    adesso qual'è il nome dell'iframe ?

    Grazie ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.