Newsgroup: it.comp.lang.javascript
Titolo: Monitorare le azioni dell'utente sul web

Ciao a tutti,
ho una semplice pagina html con un quiz vero-falso, come segue:
Vero <input type="radio" name="option0b2" id="true0b2"
onclick="getFeedback(0,2,'0b2','truefalse')"/>
Falso <input type="radio" name="option0b2" id="false0b2"
onclick="getFeedback(1,2,'0b2','truefalse')"/>
<div id="s0b0b2" style="color: rgb(0, 51, 204);display: none;"
even_steven="8">Corretto! </div>
<div id="s1b0b2" style="color: rgb(0, 51, 204);display: none;"
even_steven="9">Sbagliato! </div>
La funzione getFeedback(..) non è altro che la seguente:
function getFeedback(optionId, optionsNum, ideviceId, mode) {
    for (i = 0; i< optionsNum; i++) {
        id = "s" + i + "b" +ideviceId
        if(i == optionId)
            document.getElementById(id).style.display = "block";
        else
            document.getElementById(id).style.display = "None";
    }
    if (mode == 'truefalse') {
        document.getElementById("sfbk" + ideviceId).style.display =
"block";
    }
}
Come si può notare, viene visualizzato "Corretto!" o "Sbagliato" in
funzione del click dell'utente.
Detto ciò vorrei "catturare" la risposta dell'utente (in base
all'output "Corretto!" o "Sbagliato!") in modo da poter utilizzare
tale informazione (magari scrivendola su un file o su un db).
Alcuni mi hanno consigliato di introdurre un frame nascosto con un
javascript che "guarda" la pagina contenente il quiz, ovvero la pagina
con cui l'utente interagisce.
Si...ma come? Non ho molta dimestichezza con JS.
Avete altre soluzioni da propormi?
Spero di aver spiegato bene il mio problema.
Grazie anticipatamente

 tale informazione (magari scrivendola su un file o su un db).
comincia col cercare in rete "ajax" e a iniziare a studiarci, serve quello
per "passare" il dato al server senza ricaricare la pagina.
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 per "passare" il dato al server senza ricaricare la pagina.
e se volessi questo dato nel client?
mi basterebbe anche un popup con "Hai selezionato Vero"
Mi basta catturare la sola scelta dell'utente.
spero ancora una volta di essermi spiegato bene
Grazie ancora per la vostra cortesia 

 e se volessi questo dato nel client?
beh, devi capire come fare a capirlo: io non conosco il contesto ... per
questo caso la prima che viene in mente: dato che setti a "block" la
proprietą display:
  if(i == optionId)
            document.getElementById(id).style.display = "block";
Basta guardare in questo caso innerHTML, che ti dirą "Corretto!" oppure
"Sbagliato!"
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 "Sbagliato!"
perdona l'ignoranza, ma potresti darmi qualche informazioni in più in 
merito?
Grazie ancora 

            document.getElementById(id).style.display = "block";
basta, per lo stesso oggetto, leggere la proprietà innerHTML, e ti dirà
cosa c'è "scritto dentro".
 
https://developer.mozilla.org/en/DOM/element.innerHTML
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 
https://developer.mozilla.org/en/DOM/element.innerHTML
ah ok! ho capito!
Ma (e me ne scuso tanto) ho dimenticato di scrivere che non posso modificare 
il file html che descrive il test
e non posso modificare nemmeno il file .js che contiene la funzione 
getfeedback().
Dovrei quindi, effettivamente, usare (a meno che non ci siano altre 
soluzioni) un frame nascosto contenente un controllo con una funzione JS in 
grado di catturare cosa succede nell'altro frame.
E' possibile questa cosa o è solo "fantascienza"
Grazie e scusate per questa (importante) dimenticanza 

 E' possibile questa cosa o è solo "fantascienza"
sono nello stesso dominio?
Se non lo sono scordatelo (vedi restrizione per SOP:
 
https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
)
altrimenti per "navigare" tra i frames puoi usare top per riferirti al "più
alto" (top.), parent per riferirti al frame che contiene il frame attuale
(parent.), oppure partire dall'alto e seguire la gerarchia di frame (es.
top.frames['mioframe'] ...)
Una volta recuperato un riferimento al frame (es., var myF=parent) puoi
come prima riferirti al tuo oggetto e leggerne l'innerHTML. 
Dato che i 2 div hanno un id fisso con getElementById lo recuperi, vedi se
è visibile o no e "capisci" cosa è stato selezionato; oppure prendi un
riferimento al radio e vedi quale è stato premuto, oppure ...
fai sapere innanzitutto se non ricadi nelle restrizioni SOP, perché così a
naso secondo me ci ricadi.
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 naso secondo me ci ricadi.
sisi...stesso dominio.
Domani vedo di utilzzare quanto mi hai gentilmente scritto e speriamo possa 
risolvere questo "fastidio".
Ti faccio sapere ;-)
Buona serata