Newsgroup: it.comp.lang.javascript
Titolo: AIUTO !! Apertura pagina dinamica.

Spero che tra i Guru di JS ci sia qualcuno in grado di
darmi la dritta giusta!
Sto cercando di realizzare quanto segue:
Da un menu espandibile posto su un frame (sinistra),
seleziono una voce il cui
contenuto viene visualizzato sul frame principale.
Alcune voci di un sottomenu, riguardano dati omogenei,
ma riferiti a situazioni
diverse; i dati sono sistemati in altrettante
sottodirectory ed i file hanno tutti lo stesso nome.
Il primo approccio è stato quello di creare una pagina
(per ogni sottodirectory), che, tramite
un controllo ActiveX, legge i relativi dati da un file
di testo. Approccio riuscito.
Dato che la struttura dei dati è sempre la stessa,
vorrei creare un'unica pagina
nella directory principale, che riceva dal menu il
parametro 'directory' per la lettura dei dati.
Non so però come passare tale, o altri parametri, ad
una pagina statica.
Ho pensato quindi di creare dinamicamente la pagina,
scrivendo il codice necessario
per la lettura dei dati e allocare la pagina così
creata nel frame principale.
Sono riuscito a fare quest'ultima operazione, ma sembra
che il controllo ActiveX venga
ignorato completamente, ottenendo soltanto una pagina
vuota. Per l'esattezza ottengo
l'immagine di sfondo e qualunque altra scritta
inserisca sulla pagina.
Ecco una sintesi del codice utilizzato:
function scrivipagina(par1,par2,par3,par4){ //
richiamata dal click sulla voce del sottomenu.
.... // altre istruzioni
....
....
stringa = '<HTML><HEAD><TITLE></TITLE>';
stringa += '<link rel="stylesheet" type="text/css"
href="tabella.css">';
stringa += '</HEAD><BODY background="path/nome.gif" ';
stringa += 'onload="javascript:document.all.table1.';
stringa += "dataSrc='#comp';
document.all.table1.style.display='';";
stringa += '>"<OBJECT id=comp
CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">';
stringa += "<PARAM NAME='DataURL' VALUE
='path/nome.txt'>";// value statico per prova, da
sostituire
stringa += "<PARAM NAME='UseHeader' VALUE='true'> "; //
con parametro variabile.
stringa += "</OBJECT><center>QUESTA SCRITTA NON MI
SERVE MA VIENE PRESENTATA";
stringa += "<table id='table1' datapagesize ='13'
CLASS='comptable' align='center' width='550'
celpadding='1' cellspacing='1'><tbody> <tr> <td
align='justify'>";
stringa += "<DIV DATAFLD='testo' DATAFORMATAS='html'
CLASS
='fixedDIV'></DIV></td></tr></tbody></table></CENTER></
BODY> </HTML>";
// in questo caso c'è un solo campo da leggere
with(parent.main.document){
     open();
     write(stringa);
     close();
    }
}
Osservazioni:
il codice risultante sulla pagina creata è esattamente
quello voluto;
lo stesso identico codice, scritto su una pagina
statica funziona perfettamente;
il codice non genera alcun  messaggio d'errore di
'compilazione' o 'run time'.
Domande:
- Dove @#&&° sta il problema?
- E' il controllo ActiveX che non gradisce questo
trattamento?
- L'approccio n. 2, passare parametri ad una pagina già
scritta, è possibile? Come?
e visto che ormai siamo in ballo, balliamo:
ci sarebbe ancora una soluzione: mettere tutti i dati
in un unico file di testo,
aggiungendo per ogni record un campo che li defferenzi;
Il controllo ActiveX usato, però, non effettua alcun
tipo di filtro, ma legge tutti
i record del file. Ci vorrebbe quindi un script, che,
ricevuto il parametro
'criterio di selzione', presenti solo i records
corrispondenti.
In attesa di numerose e risolutive risposte, ringrazio
tutti coloro che hanno avuto
la pazienza di arrivare fin qui e tutti quelli che
risponderanno.
Ciao, Piero.

 scritta, è possibile? Come?
Per questa l'approccio è semplicissimo:
considera la seguente URL: 
http://www.sito.com/pagina.htm?parametro=quello_che_vuoi
Se dentro "pagina.htm" metti in uno script questo codicillo "parametro=location.search" nella variabile "parametro" ti ritrovi la stringa: "?parametro=quello_che_vuoi", cioè tutto dal punto
interrogativo in poi. A questo qualche colpetto ben assestato di metodo ( .substr() oppure .substring() ) ed estrai i dati.
Se vuoi ti mando in pvt due htmllini che si passano e leggono parametri tra form.
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . .

Grazie per la risposta immediata!
Provo subito.
Ciao, Piero.

NON funziona!
Ho scritto nel file del menu il seguente codice:
<a href="nomefile.html?folder=nomedirectory"
target="main" >
e nel file 'nomefile.html' il seguente script:
<script language="javascript">
folder=location.search;
if ( folder.indexOf("?folder") >= 0 ) {
    folder =
folder.substring(folder.indexOf("=")+1,folder.length);
    pagina=folder+"/"+folder+".txt";
    }
else{ alert('manca il folder!'); }
</script>
Risultato: folder=location.search; mi da una bella
stringa vuota!
Inoltre, anche ottenendo la giusta stringa, l'ActiveX
non accetta una variabile come
value nel parameter:
<OBJECT id=comp
CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME='DataURL' VALUE =pagina> <--- qui vuole una
costante
<PARAM NAME='UseHeader' VALUE='true'>
</OBJECT>
Ho sbagliato qualcosa?
Non so cosa sia il 'pvt', ma forse se mi mandi qualche
esempio č meglio!
(Se non ho sbgliato niente...fatti venire qualche altra
idea!!!)
Grazie e ciao, Piero.

 NON funziona!
Dagli headers vedo che usi Explorer 4, e devo darti una brutta (quasi)
notizia: il location.search, su IE4 non funziona in locale. Un brutto bug
che ti costringe a fidarti se io adesso ti dico che il codice che hai usato
č corretto e la pagina online sarą visualizzata correttamente da tutti,
oppure a testare la tua pagina attraverso il server. :)
Alla prox.
Bye.
Šarius.

Io mi fido!
:-)
--
Bye
        Ro<*¿*>berto

... sì, ho sbagliato qualcosa!
La query string funziona solo con URL tipo http://.
Ho provato direttamente on line, e la query funziona.
Resta il fatto, però, che la tabella non viene caricata
e la pagina rimane in attesa di scaricare l'ultimo
oggetto.
Forse è da tentare la terza soluzione (tabella unica),
scrivere i records letti in un array e selezionarli con
il
parametro passato con query per poi presentarli.
Ho paura che sarà molto macchinoso e lento!
...attendo istruzioni e consigli(anche da altri
lettori!).
Grazie e ciao, Piero.

 esempio è meglio!
Scusa, reminiscenze della BBS di Agorà. :-)))
"pvt" sta per  "privato" ==> in attach ad una mail
Allora te li mando in privato, ma devi usare un altro programma. Per esempio un Browser (quello con la B maiuscola che fa rima con N......pe  :-)))


 La query string funziona solo con URL tipo http://.
Allora installati il PersonalWebServer e prova "on-line" no?


 scritta, è possibile? Come?
