Newsgroup: it.comp.lang.javascript
Titolo: modificare una input area in un form

Ho il seguente arrangiamento che funziona su Netscape 3 sotto Unix, IE6
sotto Win e Konqueror sotto Linux, ma non sotto Netscape 7 Unix o
Mozilla Linux (dove fallisce silenziosamente) ne' sotto Netscape 4 Unix
(dove da' il messaggio "access disallowed from scripts at XXXX to
documents at another domain").
1) c'e' un frameset  
http://host/PATH/pinco,html
 mella cui HEAD sono
   definite delle funzioni javascript del tipo :
   function changeItem(i,v) {
    top.frames["UP"].document.myform.elements[i].value = v ;
   }
2) nella frame superiore del frameset e' contenuta una pagina
 
http://host/PATH/pincoform,html
 che contiene un form, la cui
   action e' una servlet java 
http://host:8080/servlet/myStuff
   il form contiene una tabella di input areas
  <td><input name="item01" size=3 maxlength=5 value=" "></td>
  <td><input name="item02" size=3 maxlength=5 value="0"></td>
  ...
  <td><input name="item10" size=3 maxlength=5 value="0"></td>
  (contiene anche una serie di checkbox, radiobutton ecc.)
3) in una delle modalita' d'uso, l'utente entra un numero nella
   prima input area, e' clicca su un bottone di Load. Questo chiama
   la servlet Java, che accede a un database mysql cercando i record
   che hanno unacertacolonna=numero
4) la servlet scrive nella frame inferiore. Nel caso piu' semplice,
   che cioe' nel database abbia trovato una sola entry, scrive un
   pezzo di javascript e dei messaggi HTML
   <SCRIPT>
   top.frames['UP'].document.myform.reset()
   parent.changeItem(1,numerorichiesto)
   parent.changeItem(2,unvaloreritornato)
   ...
   parent.changeItem(10,altrovalore)
   </SCRIPT>
   loading completed for source numerorichiesto
   il risultato e' di caricare nelle celle del form nella frame
   superiore i valori ritrovati (di fatto vengono anche ticcati alcuni
   dei checkbox e radiobutton)
5) l'idea di usare un javascript prodotto dalla servlet java per
   modificare il contenuto del form, invece di generare l'intero codice
   HTML della frame superiore da dentro la servlet e' per semplicita' e
   convenienza
   infatto la stessa servlet puo' gestire (SENZA modifica del codice) un
   paio di frameset e form diversi 
p.es
. 
http://host/PATH/pinco,html
 e
 
http://host/PATH/panco,html
, 
http://host/PATH/pincoform,html
 e
 
http://host/PATH/pancoform,html
   Tutte le particolarita' parametriche (la tabella mysql, il numero e
   nome delle colonne mysql) sono infatti hardcodate come hidden fields
   nel form, e se cambio qualcosa non devo ricompilare la servlet.
   Tutto il sistema verra' usato da un numero ristretto di persone (tre
   o quattro) pero' in posti diversi.
Nell'errore che ottengo con Netscape 4 "access disallowed from scripts
at XXXX to documents at another domain", XXXX e' il nome della servlet
java.  A parte l'uso della porta 8080, essa sta sullo stesso host delle
pagine web.
Mi pare di capire (google) che quel messaggio sia un blocco di sicurezza
per evitare che javascript "pirata" modifichino un form, ma qui l'uso
che intendo farne e' voluto e legittimo.
Non riesco a trovare un modo a livello di preferenze di browser di
disabilitare questo blocco per Netscape 4, 7 e Mozilla (che sono quelli
che intenderebbero usare i miei "corrispondenti").
a) esiste modo di disabilitare il blocco a livello di browser ?
b) oppure esiste un trucco per bypassarlo altrimenti ?
c) e' corretta la diagnosi di cui sopra, oppure e' una altra questione
   (
p.es
. di timing ? ... in altri casi in cui avevo un CGI [shell]
   script che cambiava il GIF caricato come image[xyz].src, ho notato
   che era necessario un delay a livello di javascript, del tipo
   t=setTimeout('parent.ctrl.location.reload()',1500)
-- 
----------------------------------------------------------------------
nos...@mi.iasf.cnr.it
 is a newsreading account used by more persons to
avoid unwanted spam. Any mail returning to this address will be rejected.
Users can disclose their e-mail address in the article if they wish so.

 pagine web.
E' proprio la porta che ti frega, fa parte del dominio anche perche', se 
ci pensi, su una stessa macchina possono essere installati piu' server 
(anche solo server HTTP) con diversi siti/domini... ed e' proprio il tuo 
caso.
Copio dall'inizio della seconda pagina di questo documento:
http://www.jsdir.com/red/red.asp
------------------------------------
Communicator defines the origin as the substring of a URL that includes
protocol://host where host includes the optional :port part.
---------------------------------------------
Sorry, non mi viene in mente nulla.
In quel documento che ti ho segnalato (a proposito: e' abbastanza 
vecchio, le URL di riferimento nelle note etc. non saranno piu' valide) 
vedi che l'unica e' usare uno script firmato, ma non ho mai fatto 
esperimenti in proposito.
Sparo ad alzo zero: non potresti far rispondere la servlet sulla porta 
80 (o cmq la stessa del sito) magari solo per queste interrogazioni?
L'ho buttata li, non so assolutamente nulla di queste robe :-)
Potresti provare con XML, ma non garantisco nulla anche qui.
Leggiti quest'articolo: 
http://www.jsdir.com/goonline/gol0702.asp
Ma potresti imbatterti nello stesso problema, non ricordo piů se IE o 
Mozilla s'incazzavano, andando a prendere il feed di Punto Informatico, 
proprio sulla SOP.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
http://www.wmtools.it
 ---- WebMasterTools - Servizi per il tuo sito
http://www.dev2dev.it
 ---- La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .