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

    Ricostruire il layout, problema nei percorsi

    Ho usato un semplice script per ricostruire il layout del
    mio sito: index.htm contiene un iframe, nel quale vengono aperte le varie pagine. Questo script fa sì che aprendo la direttamente la pagina prova.htm (invece di index.htm che apre prova.htm in un iframe), si apra index.htm con prova.htm dentro l'iframe.

    nella pagina prova.htm ho inserito questo codice:
    codice:
     <body onLoad="change()">
     
     <script language="JavaScript">
    var thispage = "prova.htm";
    if (location.href == top.location.href) {
    location.href = "index.htm?pag="+thispage;
    }
    </script>
    Fin qui, tutto bene: apro prova, e mi si apre index con prova dentro l'iframe.

    Se però sposto prova.htm nella cartella, mettiamo, dir, cambio il codice in questo modo (sempre e solo in prova.htm):
    codice:
     <body onLoad="change()">
     
     <script language="JavaScript">
    var thispage = "dir/prova.htm";
    if (location.href == top.location.href) {
    location.href = "../index.htm?pag="+thispage;
    }
    </script>
    Ma nel secondo caso mi apre la index col contenuto di default nell'iframe, mentre invece dovrebbe contenere Prova.htm
    Sbaglio io o è lo script che è inadatto a gestire i percorsi? :master:

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Usa tutti percorsi assoluti...

    <script language="JavaScript">
    var thispage = "/dir/prova.htm";
    if (location.href == top.location.href) {
    location.href = "/index.htm?pag="+thispage;
    }
    </script>

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Non funziona neanche così...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Posta lo script in index.htm che preleva il parametro e lo assegna al contenuto dell'iframe.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Ma a dire il vero non c'è nessuno script in index, c'è un iframe normale. E' lo script in prova.htm che fa tutto... ad ogni modo, ecco la parte di index che contiene l'iframe in questione:
    codice:
    <div id="main" OnMouseOver="MM_changeProp('slidemenu','','style.left','-275px','DIV')">
    <iframe scrolling="auto" frameborder="1" width=700 height="550" name="main" src="framemain.htm"></iframe>
    </div>
    può essere il box in cui è contenuto (che ha lo stesso nome) a fare casino?
    però ho provato a toglierlo e il risultato non cambia

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    I nomi uguali di certo non aiutano... anzi :rollo: .

    Comunque uno script che cambi il contenuto dell'iframe da qualche parte deve esistere... per magia il parametro non va da solo dove lo vorresti tu .

    Controlla all'interno della pagina framemain.htm

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    eh eh... avevi ragione
    in effetti dentro framemain c'è un richiamo a questo codice:
    codice:
    function change() {
     var ind = location.href;
     var splitter = ind.indexOf("?");
     if (splitter != -1) {
      var nvar = ind.substring(splitter+1, ind.lenght);
      var param = nvar.indexOf("=");
      if (param != -1) {
       var pag = nvar.substring(0,param);
       var locat = nvar.substring(param+1);
       if (pag == "pag") {
        document.frames['main'].location.href = locat;
       }
      }
     }
     else {
      document.frames['main'].location.href = "framemain.htm"; /* mettete al posto di vuoto la pagina che di defualt deve apparire nell'index */
     }
    }
    Me n'ero proprio dimenticato... e sì che il primo script che ho postato c'era un bel <body "onload=change()">
    Però questo non mi aiuta... non saprei dove andare a mettere i percorsi, qui! Hai voglia di continuare a darmi una mano?
    (A proposito, non ti ho ancora ringraziato dell'interessamento: lo faccio adesso, thank you very much)

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sposta lo script nella pagina index

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Se sposto lo script su index non va in nessun caso, nè che siano nella stessa cartella, nè tantomeno in cartelle diverse.

    Il codice originale l'ho preso qui, dove effettivamente dice di fare come consigli tu: la prima parte (fino a <body onload="change()">, compreso) andrebbe nell'index, il secondo pezzo in ogni pagina.
    Invece io, forse per poca attenzione, ho fatto in un altro modo e per caso ne ho imbroccato uno che funge.

    Riassumo (per chiarezza del topic) l'unica configurazione funzionante (nel caso che i file siano nella stessa cartella):
    index ha un frame con id main, in prova c'è questo codice:
    codice:
    <script type="text/javascript>
    function change() {
     var ind = location.href;
     var splitter = ind.indexOf("?");
     if (splitter != -1) {
      var nvar = ind.substring(splitter+1, ind.lenght);
      var param = nvar.indexOf("=");
      if (param != -1) {
       var pag = nvar.substring(0,param);
       var locat = nvar.substring(param+1);
       if (pag == "pag") {
        document.frames['main'].location.href = locat;
       }
      }
     }
     else {
      document.frames['main'].location.href = "framemain.htm"; /* mettete al posto di vuoto la pagina che di defualt deve apparire nell'index */
     }
    }
    </script>
    
     <body onLoad="change()">
     
     <script language="JavaScript">
    var thispage = "prova.htm"; /* inserire qua il nome completo di estensione della pagina corrente */
    if (location.href == top.location.href) {
    location.href = "index.htm?pag="+thispage; /* nel caso in cui la pagina non sia aperta in un frame / iframe effettuo il redirect alla index contenete il codice dell'iframe */
    }
    </script>
    In pratica è prova.htm che fa tutto, che controlla di essere dentro un iframe e nel caso contrario apre index e si va a mettere nel posto giusto (nell'iframe "main" che è indicato nello script).

    Non so più dove sbattere la testa... e purtroppo di altri script adatti allo scopo non ne ho trovati

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma come farebbe la funzione change() ad essere richiamata? la pagina caricata e' index e al suo interno non esiste lo script dato che, a maggior ragione, nell'iframe ospita framemain.htm che non lo contiene... quindi per forza lo si deve inserire nella index!

    Il fatto che il tuo esperimento funzioni non vuol dire che sia corretto

    Ecco le mie due pagine di prova (semplificate... rimetti i controlli vari che avevi )

    codice:
    <script>
    function change() {
    	var param = location.search.substr(1).split("=");
    	if (param[0]=="pag") {
    		document.frames['main'].location.href = param[1];
    	}
    }
    </script> 
    <body onLoad="change()">
    <iframe name="main" src="framemain.htm"></iframe>
    </BODY>
    
    
    
    
    <script>
    var thispage = "/petro/prova.htm";
    if (self == top) location.href = "/index.htm?pag="+thispage; 
    </script> 
    <body>
    prova
    </body>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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.