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

    Ricostruzione Automatica Frameset

    So che 'gira' uno script che ricostruisce automaticamente il frameset, qualora venga caricata direttamente una pagina che sta all'interno del frameset stesso.
    Qualcuno ne sa' qualcosa ?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    non so a quale script ti riferisci, però potresti controllare la stringa della location su ogni pagina (con top.location), infatti di solito quando si usano i frame rimane quasi sempre la pagina con il frameset, e controllare se l'indirizzo sia giusto oppure no.
    qualcosa del tipo:

    nella head:

    if(top.location.indexOf("parte_dell_indirizzo_del_ frameset")==-1)
    location.href=frameset.html
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    scusa se copio/incollo ma vado di fretta


    Il problema principale che deve affrontare un webmaster, nel realizzare un sito con frames, è quello di far sì che l'utente visualizzi sempre l'intera struttura del frameset, a prescindere dalla pagina da cui si accede.
    Come sappiamo, infatti, entrare da una pagina secondaria (come spesso accade proveniendo da una ricerca su qualche motore) potrebbe significare non visualizzare i frame nei quali sono contenuti i menù con i link di navigazione (in questo modo il sito risulta non navigabile!).
    Già in passato avevamo visto una possibile soluzione (http://www.html.it/mailing/archivio/30/) ma lo script di questa settimana si distingue per semplicità d'uso ed efficacia.
    Il codice è stato scritto da un forumista di Html.it, Marco Cavicchioli, che ne ha gentilmente concesso l'utilizzo senza alcuna forma di copyright.




    Il file allegato a questa mail "jscript_040302.zip" si compone di 7 file (esclusi i file "htmlit.gif" e "jscript_040302.txt"):

    frameset.htm
    sx.htm
    top.htm
    center.htm
    pagina1.htm
    pagina2.htm
    sfondo.gif



    Per una piu' semplice comprensione del presente script fai continuamente riferimento ai file sopracitati, verificando le procedure e i dati espressi. Solo in questo modo, con un continuo confronto, comprenderai le peculiarita' di questo Javascript.



    >>>>>>>>>>>>>>>> esempio <<<<<<<<<<<<<<<<<<



    Lo script è semplicissimo da spiegare ma estremamente efficace.
    Supponiamo di avere un frameset strutturato in questa maniera:
    -----------------------
    - 1 frame superiore
    - 1 frame laterale sinistro
    - 1 frame centrale
    -----------------------

    La struttura in html sarà così scritta:
    -----------------------
    <frameset cols="150,*" frameborder="NO" border="0" framespacing="0">
    <frame name="leftFrame" scrolling="NO" noresize src="sx.htm">
    <frameset rows="90,*" frameborder="NO" border="0" framespacing="0">
    <frame name="topFrame" scrolling="NO" noresize src="top.htm" >
    <frame name="mainFrame" src="center.htm">
    </frameset>
    </frameset>
    -----------------------


    Pensiamo, adesso, ad utente che entri direttamente nella pagina "center.htm". In questa situazione non verrebbe visualizzato il menù contenuto nel frame sinistro e la navigazione sarebbe impossibile.

    Il problema si risolve facilmente poche linee di codice javascript, inserite tra i tag <head> di tutte le pagine che saranno aperte nel "mainFrame".
    Ad esempio prendiamo il file "center.htm" e scriviamo quanto segue (tra i tag <head>):
    -----------------------------
    <script>
    //No Copyright, by MarcoCavicchioli.it
    if (self.name==top.name)
    {
    document.write('<frameset cols="150,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="leftFrame" scrolling="NO" noresize src="sx.htm">')
    document.write('<frameset rows="90,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="topFrame" scrolling="NO" noresize src="top.htm" >')
    document.write('<frame name="mainFrame" src='+document.location.href+'?a>')
    document.write('</frameset>')
    document.write('</frameset>')
    }
    // MarcoCavicchioli.it - http://www.marcocavicchioli.it/
    </script>
    -----------------------------

    Questo codice pone una condizione al caricamento della pagina "center.htm"; forzando un po' la mano potrebbe essere interpretato in questa maniera:
    "Se, al caricamento della pagina, quest'ultima non è contenuta all'interno di frames ma è stata richiamata singolarmente, ricostruisci la struttura del frameset con l'istruzione document.write"

    La personalizzazione è semplice e richiede di scrivere lo schema a frames del sito sostituendo al parametro "src", nella riga relativa al frame in cui vengono visualizzate le pagine, la stringa "src='+document.location.href+'?a>'".
    Spieghiamo con un esempio pratico:

    - nel caso di "center.htm" vediamo che il documento fa parte del "mainFrame". La struttura del frameset, quindi, sarebbe quella vista in precedenza e cioè:
    ---------------------------------
    <frameset cols="150,*" frameborder="NO" border="0" framespacing="0">
    <frame name="leftFrame" scrolling="NO" noresize src="sx.htm">
    <frameset rows="90,*" frameborder="NO" border="0" framespacing="0">
    <frame name="topFrame" scrolling="NO" noresize src="top.htm" >
    <frame name="mainFrame" src="center.htm">
    </frameset>
    </frameset>
    ---------------------------------

    Abbiamo detto, però, di voler fare in modo che, anche caricando singolarmente "center.htm", questa pagina venga inserita automaticamente nel frameset di origine.
    Inseriamo quindi, tra i tag <head> di "center.htm", questo codice:
    ---------------------------------
    <script>
    //No Copyright, by MarcoCavicchioli.it
    if (self.name==top.name)
    {
    document.write('<frameset cols="150,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="leftFrame" scrolling="NO" noresize src="sx.htm">')
    document.write('<frameset rows="90,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="topFrame" scrolling="NO" noresize src="top.htm" >')
    document.write('<frame name="mainFrame" src='+document.location.href+'?a>')
    document.write('</frameset>')
    document.write('</frameset>')
    }
    // MarcoCavicchioli.it - http://www.marcocavicchioli.it/
    </script>
    ---------------------------------

    Come vedete il 5° document.write contiene la stringa

    src='+document.location.href+'?a

    e sta ad indicare che deve essere cercato come frame mancante il nome della pagina caricata singolarmente (in questo caso "center.htm").
    Lo stesso identico codice (senza nessuna modifica) andrà inserito in tutte le pagine appartenenti al "mainFrame".

    Per quanto riguarda il frame superiore e quello sinistro il ragionamento è analogo.
    Nella pagina "sx.htm" inseriremo:
    ---------------------------------
    <script>
    if (self.name==top.name)
    {
    document.write('<frameset cols="150,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="leftFrame" scrolling="NO" noresize src='+document.location.href+'?a>')
    document.write('<frameset rows="90,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="topFrame" scrolling="NO" noresize src="top.htm" >')
    document.write('<frame name="mainFrame" src="center.htm">')
    document.write('</frameset>')
    document.write('</frameset>')
    }
    </script>
    ---------------------------------

    Nella pagina "top.htm" invece:
    ---------------------------------
    <script>
    if (self.name==top.name)
    {
    document.write('<frameset cols="150,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="leftFrame" scrolling="NO" noresize src="sx.htm">')
    document.write('<frameset rows="90,*" frameborder="NO" border="0" framespacing="0"> ')
    document.write('<frame name="topFrame" scrolling="NO" noresize src='+document.location.href+'?a>')
    document.write('<frame name="mainFrame" src="center.htm">')
    document.write('</frameset>')
    document.write('</frameset>')
    }
    </script>
    ---------------------------------

    Per accelerare il lavoro sarebbe opportuno mettere i diversi codici in file .js esterni da richiamare nelle singole pagine.
    w la topa

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    sempre mitico saibal!!!

    ...però...

    riferito all'esempio che hai fatto se si usasse, nella head di ogni pagina che non sia il frameset, le righe:

    if(top.location.indexOf("frameset.htm")==-1)
    location.href=frameset.htm

    non si otterrebbe un risultato migliore in termini di fatica? ? ?

    se così fosse...

    aggiungete anche le righe:
    //No Copyright, by William "standard" Verdolini


    :adhone:
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  5. #5
    Originariamente inviato da standard
    sempre mitico saibal!!!

    ...però...

    riferito all'esempio che hai fatto se si usasse, nella head di ogni pagina che non sia il frameset, le righe:

    if(top.location.indexOf("frameset.htm")==-1)
    location.href=frameset.htm

    non si otterrebbe un risultato migliore in termini di fatica? ? ?

    se così fosse...

    aggiungete anche le righe:
    //No Copyright, by William "standard" Verdolini


    :adhone:
    Innanzitutto è + preciso così:

    if(top.location==document.location)
    {location.href = frameset.htm}


    Perchè funziona su tutte le pagine... qualsiasi pagina a cui si applica questo script, non può essere visualizzata esternamente al frameset.... basta metterlo in un JS esterno e includerlo.


    La soluzione di saibal [che credo, sulla fiducia xkè non ho letto, sia quella di http://pro.html.it] è + complessa... ma se tu entri nella pagina pincopallino.html ... non ti manda semplicemente al frameset... ma al frameset con quella pagina [pincopallino] già aperta.... capito? è migliore... anche se + complesso


    byez

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    56

    mi potreste mandare lo zip

    Scusate ma la cosa mi interesserebbe moltissimo. Mi mandereste lo zip con il contenuto dello script in questione.

    Grazie

    e-mail: mirkoin@libero.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    56

    ma se

    Ciao,
    ho applicato il codice e funziona molto bene. Solo che ho un problema ulteriore.
    La mia pagina a frame è costruita in questo modo:
    2 frame: quello in alto (topframe) ha inserito un documento e in quello in basso un'altro (mainframe), il quale, anche lui, creato con due frame. (left e right frame)

    Quindi quando vado a ricostruire il frameset di un docomento che è contenuto nel rightframe posso solo ricostruire il frameset fino ad un certo punto.

    Non so se mi sono spiegato ma è un problema che proprio non riesco a risolvere.

    Avete qualche delucidazione?

    Grazie a tutti

  8. #8
    Originariamente inviato da }gu|do[z]{®©
    basta metterlo in un JS esterno e includerlo.
    byez
    Immagino... ma non so farlo ... come si fa?

  9. #9
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Difficilissimo
    Basta mettere lo script in un file di testo chiamato: mio_file.js e dentro il file html chiamante:
    codice:
    <script type='text/javascript' src='mio_file.js'></script>

  10. #10
    Hai proprio ragione ^^

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.