Accedi per seguire   
Seguaci 0
MrDay

Sostituire Iframe

22 messaggi in questa discussione

Salve di nuovo,

come promesso apro anche la discussione dei frame. Diciamo che ho creato un menu con dei bottoni sopra un iframe e, al click di un pulsante, l'attributo src del frame viene cambiato in modo da caricare una nuova pagina. Io ora non ho bisogno di un menu' sostitutivo, ma di un metodo che sostituisca il frame, e' possibile?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se stai lavorando con pagine php, potresti usare il comando include();

http://us3.php.net/manual/en/function.include.php

oppure ancora potresti avvalerti delle potenzialità che ti offre javascript, usando il comando innerHTML:

http://www.tizag.com/javascriptT/javascript-innerHTML.php

Però molto dipende da quanto effettivamente ti serve :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Grazie della risposta,

il linguaggio e' sempre asp. Con l'innerhtml posso cambiare il contenuto di un contenitore, giusto? Credo sia sconveniente utilizzare la funzione innerhtml per modificare il contenuto della pagina. Le pagine sono molte, inoltre non si tratta di modificare una parola o una frase ma parecchio codice(form, funzioni e testo).

Avrei bisogno di una specie di include dinamico...

Spero di aver descritto il problema in modo comprensibile.

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Quindi dovresti usare il corrispettivo include del linguaggio ASP, ossia:

<!--#include file="include/connessione.asp"-->

In tal modo puoi far includere una pagina asp che vai a modificare/creare a parte.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non riesco a capire come :P , puoi darmi qualche informazione aggiuntiva? Nel senso: io sapevo che l'include,serve per includere una pagina, poi non puo' essere modificato in file di inclusione.

Grazie :)

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

uhm...

forse ci perdiamo su qualche dettaglio, hai un esempio di quanto intendi?

se io include giovanni.html in paginadinamica.asp e successivamente vado a modificare la pagina giovanni.html, questa apparirà aggiornata anche in paginadinamica.asp. Perchè l'inclusione avviene nel momento in cui quell'istruzione viene letta da parte dell'interprete del linguaggio dinamico.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho capito cosa vuoi dire, facendo col tuo modo pero', per modificare la pagina giovanni.html in base alla pagina richiesta dall'utente dovrei scrivere parecchio codice in una sola pagina e ho paura che questo possa rallentare il caricamento.

Io avevo pensato, ovviamente se possibile, a un include fatto in questo modo(faccio una pseudocodifica sperando di essere chiaro):

nella pagina ci sono 3 pulsanti:

pulsante1 pulsante2 pulsante3

nel codice invece vorrei avere questo:

se pulsante1 includi giovanni.html

se pulsante2 includi giggio.html

se pulsante3 includi pippo.html

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Anche se non e' html ho trovato questo

<%
risp = Request.QueryString("risp")
If risp = "si" then
%>
 <!-- #include file = "puoiaccedere.asp" -->
<%
Else
%>
 <!-- #include file = "nonpuoiaccedere.asp" -->
<%
End If
%>

pensi si possa fare una cosa simile?e magari anche con dei pulsanti?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non devi fare cosi.. in tal modo io posso accedere anche direttamente al file puoiaccedere.asp eludendo il controllo che immetti nella pagina principale.

Non sono molto pratico di ASP, non lo uso, preferendo PHP.

Ecco il sistema che devi usare:

http://www.webmasterpoint.org/asp/pratica/...servata_185.asp

Il Response.End termina l'esecuzione della pagina ASP, quindi tutti gli altri eventuali controlli o istruzioni che fai seguire a questo comando verranno ignorate.

ps. nota che quando esegue il login crea una sessione, che viene verificata anche nella successiva pagina (privata.asp)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io credo che per le persone loggate non sia un problema perche il controllo username e' comunque su tutte le pagine. Se alla fine un utente accede ad una pagina senza passare per la pagina che contiene i menu' e' solo scomodo per lui (anche se non e' il massimo per il sito).

Io ho preso quell'esempio perche' e' il primo che ho trovato, in realta' non ho bisogno di un codice che blocchi gli utenti non autorizzati, ma di un codice per il menu' e avevo pensato a quel funzionamento. Ti posto un'altro esempio

<%
dim intDesti
intDesti=request("go_to")
select case intDesti
case 1:
%>
<!--#include file="pagina1.asp"-->
<%
response.end
case 2:
%>
<!--#include file="pagina2.asp"-->
<%
response.end
case 3:
%>
<!--#include file="pagina3.asp"-->
<%
response.end
end select
%>

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Allora, usando il codice che ho postato, ho fatto cosi': ho creato un form con dei pulsanti e un textbox invisibile, al click di uno di questi bottoni, passo un valore ad una funzione javascript che la scrive nella textbox e invia il form, la pagina si ''ricarica', una funzione vbscript recupera il valore della textbox inviato e in base a quel valore, con il select case, include una diversa pagina. Funziona con firefox 3.5.3 e con internet explorer 8.0.ecc.ecc. di seguito posto il codice:

<script language="javascript" type="text/javascript">
function carica(valore){
document.getElementById("pag").value=valore;
document.form.submit();}
</script>
<% dim pagina %>
<body onload="<% pagina=request.querystring("pag")%>">
<%if pagina="" then pagina=0 end if%>
<form name="form">
<input type="image" src="immagine0" name="Submit" onclick="carica(0)"/>
 <input type="image" src="immagine1" name="Submit" onclick="carica(1)" />
<input type="image" src="immagine2" name="Submit" onclick="carica(2)"/>
  <input type="image" src"immagine3" name="Submit" onclick="carica(3)"/>
  <input name="pag" id="pag" type="text" style="visibility:hidden" /> 
</form>

<%select case pagina
case 0: %>
<!-- #include file="zero.asp" -->
<% case 1: %>
<!-- #include file="uno.asp" -->
<% case 2: %>
<!-- #include file="due.asp" -->
<% case 3: %>
<!-- #include file="tre.asp" -->
<%end select%>

Il tempo di caricamento sembra simile a quello della pagina con i frame. Cosa ne pensi? Troppo complicato, puo' andar bene?

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

In questo modo funziona?

Mi sembra strano che non ti fornisca nessun errore se non hai specificato l'action del form (cioè quale pagina richimare quando premi il pulsante submit, del form).

Inoltre penso potresti giungere ad una soluzione anche senza usare il codice JavaScript, ma semplicemente utilizzando nel form dei valori che indicheranno la pagina scelta e recuperando queste informazioni con il comando Request.Form:

http://www.webmasterpoint.org/asp/teoria/15.asp

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

E come invio il valore al textbox prima di inviare il modulo in vbscript? O posso richiedere il valore direttamente dal bottone?

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

<script language="javascript" type="text/javascript">
function carica(valore){
document.getElementById("pag").value=valore;
document.form.submit();}
</script>
<% dim pagina %>
<body onload="<% pagina=request.form("pag")%>">
<%if pagina="" then pagina=0 end if%>
<form name="form" action="prova.asp" method="post" >
<input type="button" name="Submit" value="0" onclick="carica(0)"/>
 <input type="button" name="Submit" value="1" onclick="carica(1)" />
<input type="button" name="Submit" value="2" onclick="carica(2)"/>
  <input type="button" name="Submit" value="3" onclick="carica(3)"/>
  <input name="pag" id="pag" type="text" style="visibility:hidden" /> 
</form>

<%select case pagina
case 0: %>
<!-- #include file="zero.asp" -->
<% case 1: %>
<!-- #include file="uno.asp" -->
<% case 2: %>
<!-- #include file="due.asp" -->
<% case 3: %>
<!-- #include file="tre.asp" -->
<%end select%>

Con il post poco cambia, devo sempre scrivere nella textbox il valore della pagina e quindi usare la funzione js

Considera che prima funzionava perche' la form viene inviata alla stessa pagina da cui proviene, ora funziona con il post e la pagina di a cui inviare il form e' sempre quella di partenza: prova.asp

Modificato da MrDay

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Riesci a trovare in questa soluzione una valida alternativa agli iframes?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Considerando che l'alternativa sarebbe usare semplici collegamenti e che i frame sono considerati gli ''assassini del linguaggio html'', reputo questa scelta, che visivamente(al caricamento della pagina) e' uguale ai frame e ha un funzionamento simile ma piu' ragionevole, degna di sostituire gli iframe.

In ogni caso vorrei un parere esterno e considerando che tu sei un esperto, mi piacerebbe avere la tua opinione a riguardo. Grazie

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io sono per natura contro i frames e gli iframes! :P

Inoltre sono tecniche passate e che Google non gradisce affatto! :) quella degli include è la tecnica giusta, un attimo delicata per chi sia affaccia a questo mondo, ma sicuramente la più corretta. :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Un'ultima curiosita': quando dovro mettere il sito in rete, gli include sono visti tranquillamente dall'host o necessitano di qualche particolare supporto?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

sono dei semplici collegamenti. Se mantieni la struttura del sito non ci sono problemi. Ovvio.. l'host deve avere l'interprete del linguaggio ASP. :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Perfetto. Ti ringrazio per tutto il tempo che hai dedicato al mio problema! :) Alla prossima.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0