Newsgroup: it.comp.lang.javascript
Titolo: x Esperti Macintosh

Ciao a tutti.
In una pagina ho questo codice
<input type="file" name="file" size="40" onchange= "
document..hometext.value=
document..file.value.substring(document..file.value.lastIndexOf('\\')+1,docu
ment..file.value.length)+' align=left>' ">
che mi copia il nome assoluto di un file preso da un campo di tipo File in
un altro campo di una form.
Il problema:
su PC tutto ok.
Su Mac mi viene copiato il percorso relativo del file e non il nome assoluto
del file.
Qualcuno sa come potrei renderlo compatibile con i due sistemi?
Grazie

Il Sun, 23 Sep 2001 18:35:27 GMT, Webm@ster ha scritto.....

Giusto per pignoleria cambierei il tag così:
<INPUT TYPE="file" NAME="nomefile" .... >
perché "file" è una parola riservata.
Cmq per la tua domanda: io non ho un mac e quindi non conosco il suo file 
system, ma se ci posti la strigna che ottieni da document..nomefile.value 
vediamo di lavorarci
Domanda: "document..file" l'hai scritto così nello script o nel post per 
brevità?
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
              All the JavaScript you need
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 --
Thanks.
Adesso però dovrei introdurre un if che:
se il Pc è Mac mi cerca ':'
se il Pc è Pc mi creca '\'
Sapete come fare?
E' necessario inserire uno script o posso fare tutto in una sola linea?
Grazie
Mirco

 Senza if, usi una regex: nomefile.replace(/^.*[:\\]([^:\\]+)$/, "$1");
Scusa l'ignoranza non saprei come fare....
<input type="file" name="file" size="40" onchange= "
document..hometext.value=
document..file.value.substring(document..file.value.lastIndexOf('\\')+1,docu
ment..file.value.length)+' align=left>' ">
Saresti molto gentile...
Grazie
Mirco


<input type="file" name="file" size="40" onchange= "
document..hometext.value=
document.file.value.substring(document..file.value.lastIndexOf('\\')+1,docu
ment..file.value.length)+' align=left>' ">
Riecco il codice.
Ora so che il mac usa  ':' per dividere invece della '\'
Mi sai dire come fare?
Grazie
Mirco

 Mi sai dire come fare?
Non saprei cosa aggiungere: ti ha già risposto Marco (che a quel che vedo è il 
più ferrato qua dentro sia per MAC che per le RegExp):
nomefile.replace(.....)
Comunque leggi le nostre risposte: il mio messaggio, se l'hai letto, di certo 
non lo hai compreso perché gli errori che ti facevo notare li hai ripostati 
pari pari.


 pari pari.
Ho capito, scusa se non ti ho risposto per bene ma:
1) mi hai detto che la parola File è una parola riservata e io l'ho usata
proprio...perchè è riservata. Insomma mi serviva un tasto per fare browse
nell'hard disk e so che per farlo occorre <input type="file" name="nome">.
Ma il problema non era lì.
2) mi hai detto di postarti la stringa che stampa, ma,a parte che non ho un
mac aportata di mano, ti ho data l'informazione che ti serviva (anzi,
ringrazio Marco per questo) e cioè che il separatore nel mac è ':' quindi
era chiaro anche il problema.
Ok ho sbagliato su tutto il resto (porgo le mie scuse per questo) e prometto
solennemente di usare i newsgroup in modo più corretto.
In ogni caso, grazie ragazzi, credo di aver risolto (cercherò sul manuale il
significato dell'abominevole codice che risolve tutto:
replace(/^.*[:\\]([^:\\]+)$/,"$1");
Grazie
Mirco