Newsgroup: it.comp.lang.javascript
Titolo: riposizionare click in una pagina ASP multiframe

   Praticamente... questa è una pagina con 2 frame, multiframe.asp:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset rows="80%,*" cols="*" framespacing="0" frameborder="NO"
border="0">
<frame src="chat.asp" name="topFrame" scrolling="auto" noresize >
<frame src="form.asp?nick=<%=request.form("nick")%>" name="mainFrame">
</frameset>
<noframes><body>
</body></noframes>
</html>
    Il primo frame, chat.asp, contiene il testo della chat; il secondo,
form.asp, contiene il campo vuoto dove scrivere il testo e il pulsante per
l'invio.
    Alla pressione del pulsante su form.asp viene passato il testo al frame
superiore, eliminato il contenuto nel campo di immissione e riposizionato il
cursore sempre in questo campo. Non riesco a capire perché preso
singolarmente, form.asp funziona... aprendomi ovviamente un'altra pagina con
il chat.asp.
    Io vorrei tutto in un'unica pagina... forse in qualche modo
multiframe.asp aggiorna form.asp?
    Come potrei riportare il cursore nel campo di immissione operando su
multiframe.asp?



   Praticamente... questa è una pagina con 2 frame, multiframe.asp:
Ehilà! Ma non erano risolti tutti i problemi? Non restava solo da capire
perché il campo di input non otteneva il focus? Mi pare che tu abbia
cambiato struttura...
Ad ogni modo, le informazioni che hai dato non bastano a risolvere il
problema (cosa c'è nei due frame?).
-- 
Nando [?]
Apostolo della Prova

 problema (cosa c'è nei due frame?).
    In "chat.asp" c'è la parte dove visualizzare il testo:
<html>
<META HTTP-EQUIV=REFRESH CONTENT="30;URL=chat.asp#fine_pagina">
<%
Set fso = CreateObject("Scripting.FileSystemObject")
%>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<%select case request.querystring("azione")
case "scrivi"
Set f = fso.OpenTextFile(Server.MapPath("\public\chatX.txt"), 8, True)
f.WriteLine now() & " - <b>" & request.form("nick")& "</b>:
"&request.form("msg")
end select%>
<body>
<%
Set f = fso.OpenTextFile(Server.MapPath("\public\chatX.txt"), 1)
Do While f.AtEndOfStream <> True
response.write f.ReadLine & "<br>"
Loop
%>
<a name="fine_pagina"></a></body>
</html>
    In "form.asp" c'è il campo dove inserire il testo e il pulsante (questa
è una versione col tuo suggerimento che ho un po' "violentato" perché
pensavo non andasse - credo di aver messo solo il nome esplicito del campo
dove mettere il focus):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<SCRIPT language="JavaScript">
function clearField(inputElement) {
  setTimeout(function() {inputElement.value="";
document.form1.msg.focus()},50);
  return true;
}
</SCRIPT>
<form action="chat.asp?azione=scrivi#fine_pagina" method="post" name="form1"
target="topFrame" onsubmit="return clearField(this.msg)">
<p><font size="2">Inserisci il messaggio:</font>
<input name="msg" type="text" id="msg">
<input type="submit" name="Submit" value="invia">
<input name="nick" type="hidden" id="nick"
value="<%=request.querystring("nick")%>">
</p>
</form>
</body>
</html>
P.S.: non ho capito perché io non vedo il mio post sul NG :-/

 P.S.: non ho capito perché io non vedo il mio post sul NG :-/
Io invece ho ancora delle difficoltà a capire qual è il tuo problema :)
Comunque, secondo me le cose verrebbero un po' più semplici se, invece che
usare un frameset, tu usassi un iframe, dandogli il name da specificare
come target nella form e pace.


 da specificare come target nella form e pace.
    Provo a capire cosa cambia con questa soluzione...
--
Uomo che lavora non cibba.

     Provo a capire cosa cambia con questa soluzione...
Guarda, non so se cambia davvero qualcosa però a me sembra un po' più
"pulita", semplice e lineare... si tratterebbe di costruire 2 pagine: 1
contenente la form per l'invio del messaggio e un iframe; nell'iframe
andrebbe caricata la pagina che riporta i messaggi. Se all'iframe dai un
nome, mediante l'attributo name, puoi specificare il target nella form e
quindi ricaricare il contenuto dell'iframe stesso ogni volta che si invia
un messaggio. Almeno così mi pare :)
Questo, ovviamente, sarebbe "uno" dei tanti modi per ottenere il risultato
che desideri.


 risultato che desideri.
    Ho letto qualcosa, ma intanto pare che non sia visibile da tutti i
browser... ma non ho capito se da quelli ormai vecchi o da altri ancora
abbastanza diffusi...


 abbastanza diffusi...
Mi pare che:
iframe è supportato bene da Netscape a partire dalla 6, Opera a partire
dalla 5 e Explorer a partire dalla 4; usando i frame guadagni il supporto
per NN4 e IE3... decisamente vecchi :)


 il supporto per NN4 e IE3... decisamente vecchi :)
    Non riesco a risolvere, ma credo dipenda dal refresh di "chat.asp":
news:44072...@x-privat.org

 Non riesco a risolvere, ma credo dipenda dal refresh di "chat.asp":
Se vuoi averne certezza, leva il refresh e vedi se il focus viene dato
correttamente.
Ahimè, in questi giorni mi manca la testa per capire, poi, come risolvere
questo problema... cmq, se ti va, dammi un url della pagina incriminata,
così appena posso dò un occhio e faccio un po' di prove (non postare tutto
il codice qui, è troppo lungo... se proprio non puoi dare un url, mandami
il codice via mail, l'indirizzo è "mezzo" valido -armacot invece di
aarrmmaaccoott).


 valido -armacot invece di aarrmmaaccoott).
    Ti mando le pagine, devi solo posizionare il file di testo in una
cartella con permessi giusti lettura/scrittura (a me è public) e cambiare
eventualmente il percorso di esso in chat.asp.
    Lancia "multiframe.asp" per la versione con frame, e "iframe.asp" per la
prova con l'iframe. Se lanci direttamente "form.asp", vedrai che funziona...
ma ovviamente apre un'altra pagina.

 che funziona... ma ovviamente apre un'altra pagina.
    Ho trovato cos'č: in "iframe.asp", era:
<form action="chat.asp?azione=scrivi#fine_pagina" method="post" name="form1"
target="topFrame" onsubmit="return clearField(this.msg)">
    ...e non č andato finché non ho tolto #fine_pagina , cioč cosě
<form action="chat.asp?azione=scrivi" method="post" name="form1"
target="testochat" onsubmit="return clearField(this.msg)">
     ... ora funziona anche il focus! (ma ovviamente il testo non viene
riportato piů all'ultima riga)
    Non ho fatto altre prove, ma ora ho questa informazione in piů :-)

     ...e non è andato finché non ho tolto #fine_pagina
Innanzitutto, il problema si presentava in IE, ma non in FireFox (non ho
controllato Opera). Il punto, come avevi detto tu, è che la pagina chat.asp
si "prende" il focus; almeno così mi pare.
Una soluzione potrebbe essere quella di ridare il focus al campo di input
dopo che la pagina chat.asp si è caricata completamente, il che senz'altro
potrebbe essere fatto operando da chat.asp... però la cosa andrebbe fatta
per benino... ma mò so' troppo stanco, ti saprò dire :)


 andrebbe fatta per benino... ma mò so' troppo stanco, ti saprò dire :)
    Io faccio qualche prova, ma magari faccio confusione e mi sfuggono cose
di poco conto...
    Ti ringrazio comunque per tutto il supporto (diretto o indiretto) che mi
hai dato fin qui :)