Newsgroup: it.comp.lang.javascript
Titolo: [?] childNodes e IE5

Faccio una chiamata xmlhttp, ricevo il risultato (verificato con
responseText, tutto ok) e lo passo a questa function per verificare il
risultato.
xml (oggetto MyObj=XmlHttp.responseXML):
<Response><ERR_UTENTE_NOT_EXIST>Codice cliente o password errata, oppure
accesso al sito non consentito.</ERR_UTENTE_NOT_EXIST></Response>
La function la chiamo con:
Err=GetNodeText(MyObj.childNodes,"ERR_UTENTE_NOT_EXIST");
function:
function GetNodeText(N,s) {
 var ris=null;
 for(var x=0;x<N.length;x++) {
  if(N[x].nodeName.toUpperCase()==s.toUpperCase())
   ris=(N[x].firstChild?N[x].firstChild.nodeValue:"");
  else if(N[x].nodeType==1&&N[x].childNodes.length>0) 
   ris=GetNodeText(N[x].childNodes,s);
  } //ciclo tra i nodi
 return ris;	 
} //GetNodeText
'ndò'stà il problema?
mi dicono che con win98 - IE5 segnala errore. Ho fatto delle verifiche,
praticamente risulta che con Gecko e IE6 la MyObj.childNodes.length==1,
mentre con IE5 è = 0 (e quindi restituisce sempre null).
La cosa più strana è che 2 clienti mi hanno detto che con win98 e IE
*AGGIORNATO ALLA 6* segnala lo stesso problema.
Qualcuno ha esperienza su ciò e sa dirmi cosa c'è che non va? 
io intanto continuo con i test (ma non saprei bene come sostituire la
childNodes...) E' un casino perché temo che non sia la function di per sè
che non va, e se occorre fare la chiamata in modo diverso vorrebbe dire non
cambiare solo la function ma cambiare tutte le chiamate del sito (dei
siti...) :-/
Grazie,
Cristiano
-- 
"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.

In data Thu, 6 Jul 2006 10:06:47 +0200, Cristiano Larghi ha scritto:
Dimenticavo: qualcuno che ha un win98 con IE6 fa un test, giusto per
verificare che non sia vero che non va su win98 manco aggiornando IE?
Uno dei siti "incriminati" č 
www.primestore.it
, fate la login (anche con
utente inventato, tanto tutti i controlli restituiscono null)...
Grazie
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

 siti...) :-/
Cioé? Immagino faccia parte di una libreria, una volta che modifichi il
corpo della funzione, non dovrebbe impattare troppo come cambiamento, no?
L'importante è che i parametri di ingresso e i risultati in uscita siano i
medesimi.
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 corpo della funzione, non dovrebbe impattare troppo come cambiamento, no?
sě, ma la function (che ora non sto piů considerando) č una sola, mentre le
chiamate sono in parecchi file js sparsi qua e la ... sarebbe molto piů
comodo modificare la function (che č una sola) anziché dover modificare
magari 50 chiamate (e per ognuna fare gli opportuni test).
sto pensando di risolvere il problema a monte: 
function getXmlHttpRequest(){
 if (window.ActiveXObject) {
  /*@cc_on
		@if (@_win32)
   				return new ActiveXObject("Microsoft.XMLHTTP");
  		@end 
	@*/
  return null;
 } 
 else if (window.XMLHttpRequest)
  return new XMLHttpRequest();
 else return null;
} //getxmlHttpRequest
potrei modificare questa function e mettere anche il controllo IEver>5 (non
ricordo la sintassi a memoria), cosě chi ha IE5.0 (vorrei perň mantenere
almeno IE5.5) non usa xmlhttp ... ma mi scoccia un po' (tra l'altro dovrei
modificarla per prepararmi per IE7, penso)
L'altra alternativa che mi č venuta in mente č di permettere all'utente di
forzare (con un cookie, o come flag nel suo record) il non-uso di xmlhttp
(che risolverebbe anche eventuali strani problemi, tipo con firewall
bizzarri, internet security e altre cosette particolari. Mi č capitato 2
settimane fa un cliente con firefox dove xmlhttp non andava e non c'č stato
verso di farlo andare, alla fine mi ha detto che era norton internet
security). ma mi scoccia un po'.
Infine: mi sovviene che c'erano problemi anche con safari; tempo fa
qualcuno (sembro la carta?) mi aveva indicato il perché ma non trovo piů la
stampa che mi ero fatto e il messaggio non lo trovo con google, magari il
problema era lo stesso? boh...


> 	alert( myobj.responseXML.xml );
dimenticavo: alert(XmlHttp.responseText) dà la corretta stringa in
entrambi, che è
<?xml version="1.0"
encoding="latin9"?><Response><ERR_UTENTE_NOT_EXIST>Codice cliente o
password errata, oppure accesso al sito non
consentito.</ERR_UTENTE_NOT_EXIST></Response>
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 magari il problema era lo stesso? boh...
No, dubito. Penso me ne ricorderei, e cmq lui non mi pare il tipo da perdere
il capo dietro a IE5 su Win98.. è già tanto se supporta/sopporta IE6... :)
( e per certi versi, come dargli torto... )


 ( e per certi versi, come dargli torto... )
no, sicuramente la soluzione la aveva postata per safari, ma magari era lo
stesso problema che ha IE5. Ma ora direi proprio di no.


 fine il latin9 era quella che funzionava egregiamente ...
avrei risolto così:
function getXmlDocumentFromXmlHttp(xmlHttp) {
 var myObjDoc=xmlHttp.responseXML;
 if(myObjDoc.parseError.errorCode!=0) {
  //var provv=xmlHttp.responseText.replace(/<\?xml version="1.0"
encoding="latin9"\?>/i,"");
  var provv=xmlHttp.responseText.replace(/latin9/gi,"ISO-8859-1");
  var ris=myObjDoc.loadXML(provv);
  if(!ris) return null;
 } 
 return myObjDoc;
} //getXmlDocumentFromXmlHttp
problema: se faccio quanto sopra ancora errore "impossibile passare dalla
codifica corrente a quella specificata" ... ma che cazz...
se anziché sostituire latin9 con iso-8859-1 uso il replace sopra remmato
(rimuovo direttamente la dichiarazione) sembra funzionare tutto (non ho
provato, ma in questo modo mi saltano sicuramente le accentate)...


 avrei risolto così:
soluzione finale (aggiunto controllo esistenza oggetto parseError
altrimenti Gecko se la mena):
function getXmlDocumentFromXmlHttp(xmlHttp) {
 var myObjDoc=xmlHttp.responseXML;
 if(myObjDoc.parseError&&myObjDoc.parseError.errorCode!=0) {
  var provv=xmlHttp.responseText.replace(/<\?xml version="1.0"
encoding="latin9"\?>/i,"");
  //IE5: errore "impossibile passare dalla codifica corrente... 
  //var provv=xmlHttp.responseText.replace(/latin9/gi,"ISO-8859-1");
  var ris=myObjDoc.loadXML(provv);
  if(!ris) return null;
 } 
 return myObjDoc;
} //getXmlDocumentFromXmlHttp
Può ovviamente essere generalizzata per rimuovere il tag che contiene la
proprietà encoding ma vado di fretta.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 proprietà encoding ma vado di fretta.
function getXmlDocumentFromXmlHttp(xmlHttp) {
 var myObjDoc=xmlHttp.responseXML;
 if(myObjDoc.parseError&&myObjDoc.parseError.errorCode!=0) {
  var provv=xmlHttp.responseText.replace(/<.*encoding=[^>]*>/i,"");
  var ris=myObjDoc.loadXML(provv);
  if(!ris) return null;
 } 
 return myObjDoc;
} //getXmlDocumentFromXmlHttp
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 quindi diventerebbe, per futuro supporto IE7:
In tutti i miei ultimi post nei quali ho suggerito l'uso della
getXmlHttpRequest, ho scritto il codice aggiornato.


 getXmlHttpRequest, ho scritto il codice aggiornato.
cercata, sì, è uguale a come la ho modificata io.
Danke


 problema era lo stesso?
i problemi con Safari sono relativi a:
- mancata creazione di un documento XML con document.implementation
  (fix facile: fetchane uno vuoto)
- lowercase di tutti i nomi attributi creati in un document XML
- lowercase dei nomi di attributi ottenuti con .attributes
- errore di encoding con cose come .setAttribute('foo','<') non escapate
- possibili chiusure browser per XmlHttpRequest fetchato in sincrono
Gran belle rotture di scatole, ma ci si convive.
-- 
Splendente in eta` acerba di passione
rosso fiammante,
ma senza eta` matura
marcia impostura

 - possibili chiusure browser per XmlHttpRequest fetchato in sincrono
posso chiederti di provare a loggarti nel sito 
www.primestore.it
 con login
e password a caso e vedere se funziona?
Grazie
Cristiano
-- 
"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.

 - possibili chiusure browser per XmlHttpRequest fetchato in sincrono
L'unica cosa problematica, mi pare questa. Spiega un po'...


 andavano poi si chiudeva il browser.
Premesso che non mi piace proprio il verbo italianizzato "fetchare" (mi
suona troppo male, ma de gustibus non est disputandum), cosa intendi dire?
Che facendo una semplice richiesta sincrona al server, Safari ogni tanto si
autotermina?


 non saprei, comunque si chiude.
Brutto, bruttissimo bug... Da approfondire, comunque.


 
http://www.primestore.it/js/XmlClient.js
 - line 64
:-O
function getXmlDocumentFromXmlHttp(xmlHttp) {
 var myObjDoc=xmlHttp.responseXML;
 if(myObjDoc.parseError&&myObjDoc.parseError.errorCode!=0) { //RIGA 64
  var provv=xmlHttp.responseText.replace(/<.*encoding=[^>]*>/i,"");
  var ris=myObjDoc.loadXML(provv);
  if(!ris) return null;
 } 
 return myObjDoc;
} //getXmlDocumentFromXmlHttp
che è che dà undefined?
se è il myObjDoc siamo a posto :-/
ho riscritto la riga 64 così:
if(myObjDoc&&myObjDoc.parseError&&myObjDoc.parseError.errorCode&&myObjDoc.parseError.errorCode!=0) 
Mi puoi dare un occhio?
Secondo te perché/quando dà undefined?


 Undefined value, riga 54 di XmlClient.js
:-O scusa, adesso è saltato dalla 64 alla 54 oppure hai sbagliato a
scrivere una delle 2 volte?


>> Undefined value, riga 54 di XmlClient.js
Mi sa che non ne esco senza poter testare al volo ...
ti indico dov'è l'errore, così se ti viene in mente qualcosa provo,
altrimenti dovrò lasciar stare per il momento.
function TestPROJERR(obj) {
  var err=GetNodeText(obj.childNodes,"PROJERR"); //riga 54
  if(err) {
    ...............
} //TestPROJERR
Chiamato così:
 if(!TestPROJERR(XmlHttp.responseXML)) return false; 
il problema è che potrebbe anche essere prima l'errore, e quindi obj
potrebbe essere undefined, oppure dentro la GetNodeText:
function GetNodeText(N,s) {
 var ris=null;
 for(var x=0;x<N.length;x++) {
  if(N[x].nodeName.toUpperCase()==s.toUpperCase())
   ris=(N[x].firstChild?N[x].firstChild.nodeValue:"");
  else if(N[x].nodeType==1&&N[x].childNodes.length>0) 
   ris=GetNodeText(N[x].childNodes,s);
  } //ciclo tra i nodi
 return ris;	 
} //GetNodeText
 


 prova a modificare quelle due righe così:
[CUT]
fatto; per testare:
 
http://www.primestore.it/primestore.aspx?XmlClientDebug=1
ti ringrazio


 ehm.. a me non risulta modificato. stesso codice, stesso errore.
:-O
non carica più xmlclient.js ma xmlclientdebug.js
ho [ri]provato adesso e funziona correttamente (2 alert object e poi il
messaggio che l'utente non è corretto)...che ha 'sto safari, manco la
querystring passa corretta? :-)
cache?


 perché è undefined :-)
la chiamata è
 	if(!TestPROJERR(XmlHttp.responseXML)) return false; 
e XmlHttp è il risultato della chiamata xml:
 	OpenXmlHttp(XmlHttp,xmlDocument,"RoundTrip/XmlLogin.aspx");
adesso sempre con l'url che ti ho indicato carica LoginDebug.js (oltre che
XmlClientDebug.js), che ho modificato così:
alert("invio la chiamata:
OpenXmlHttp(XmlHttp,xmlDocument,\"RoundTrip/XmlLogin.aspx\");");
	OpenXmlHttp(XmlHttp,xmlDocument,"RoundTrip/XmlLogin.aspx");
	alert("oggetto XmlHttp restituito:"+typeof XmlHttp);
	var MyObj=getXmlDocumentFromXmlHttp(XmlHttp);
	if(!TestPROJERR(XmlHttp.responseXML)) return false; 
 
infine l'xml restituito:
<?xml version="1.0"?>
<Response><ERR_UTENTE_NOT_EXIST>UTENTE o PASSWORD
errata.</ERR_UTENTE_NOT_EXIST></Response>
 
http://www.primestore.it/primestore.aspx?XmlClientDebug=1
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 popoli e quindi invii al server in POST?
effettua un test, per questo ho scartato la possibilità che fosse questo:
	xmlDocument=getXmlDocument(P);
	if(!xmlDocument) {
	alert("Attenzione: si è verificato un errore.\n\nSi prega di
riprovare.\n\nSe il problema dovesse persistere inviare una mail a
dom...@editaliaspa.it
.");
	return false;
	}//P non è well-formed...
La getXmlDocument:
function getXmlDocument(s) {
 if(typeof DOMParser=="object")
  objRis=new window.DOMParser().parseFromString(s, 'text/xml');
 else if(window.ActiveXObject) {
  objRis=new ActiveXObject("Microsoft.XMLDOM");
  objRis.loadXML(s);
 }	
 else return s;	//per Opera, che ha una gestione assurda del DOMParser
 //arrivato qua ho in objRis l'oggetto, devo verificare se l'xml passato è
well-formed...IE=>documentElement=null, Gecko=>PARSEERROR
 var DE=objRis.documentElement;
 if(!DE||DE.tagName.toUpperCase()=="PARSERERROR") return null;
 return objRis;
} //getXmlDocument
e la P passata:
<Request><utente><![CDATA[login]]></utente><password><![CDATA[password]]></password>
<LoginType>xxxx</LoginType></Request>


 tutti i childNodes del .documentElement e poi li ripopolo con i miei.
ok
andiamo a monte:
function getXmlHttpRequest(){
 if (window.XMLHttpRequest)
  return new XMLHttpRequest();
 else if (window.ActiveXObject) {
  /*@cc_on
		@if (@_win32)
   				return new ActiveXObject("Microsoft.XMLHTTP");
  		@end 
	@*/
  return null;
 } 
 else return null;
} //getxmlHttpRequest
ti viene in mente su come far restituire null se è safari?
a questo punto l'unica penso sia fargli capire che Safari non supporta
correttamente xmlhttp


 fa e che per IE c'è modo, ma non mi pare che sia pratica "standard".
E' proprio standard. Nel senso che fa parte degli standard. Solo che Safari
non supporta gli standard. :) In special modo, a quanto pare, quando si
tratta di creare un miserrimo file XML.


 tratta di creare un miserrimo file XML.
concordo e sottoscrivo.
inoltre non voglio certo andare a modificare i responseXML in tutti i .js
per renderlo compatibile con chi compatibile non è...
a te viene in mente come escluderlo dall'xmlhttp?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 	xmlDocument=getXmlDocument(P);
Temo che questo su Safari risponda picche.
Ho nella "to do list" di verificare un paio di workaround alla questione; ma
temo che l'unica sia appoggiarsi, in un modo o in un altro, ad un oggetto
XMLHttpRequest.


 a te viene in mente come escluderlo dall'xmlhttp?
Ferma i cavalli; io mi riferivo alla creazione di documenti XML, non a
XmlHttpRequest. Safari lo supporta tranquillamente, non hai bisogno di
escluderlo. Un problema ce l'hai sicuramente su getXmlDocument(), quello si.


 Temo che questo su Safari risponda picche.
sì.
leggo or ora che non supporta DOMParser; dato che sicuramente non supporta
manco ActiveXObject restituirà (come per alcune versioni di Opera) la
stringa stessa.
posso forse intervenire qua per creare questo benedetto XmlDocument?
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 escluderlo. Un problema ce l'hai sicuramente su getXmlDocument(), quello si.
sì, ho capito, ma devo risolvere questo problema e in fretta.
Quindi, almeno finché non si capisce, pensavo di escluderlo dall'xmlhttp e
fargli fare il "normale" invio via form.
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 posso forse intervenire qua per creare questo benedetto XmlDocument?
Devi usare XmlHttpRequest.


 fargli fare il "normale" invio via form.
Se getXmlDocument restituisce un oggetto che non č un XmlDocument, e questo
preclude il funzionamento di xmlhttp, allora imposta a null tale
riferimento.
Sperando che tu abbia una sola istanza di xmlhttp :)


 riferimento.
sì, ma attualmente i js verificano che xmlhttp sia istanziato, altrimenti
vanno via form.
Dovrei quindi modificare tutte le chiamate js in modo che verifichi in
qualche modo l'XmlDocument (non basta che non sia un XmlDocument, perché se
restituisci la stringa Opera [almeno in alcune versioni, non ricordo quali]
funziona correttamente):
function getXmlDocument(s) {
 if(typeof DOMParser=="object")
  objRis=new window.DOMParser().parseFromString(s, 'text/xml');
 else if(window.ActiveXObject) {
  objRis=new ActiveXObject("Microsoft.XMLDOM");
  objRis.loadXML(s);
 }	
 else return s;	//per Opera, che ha una gestione assurda del DOMParser
 //arrivato qua ho in objRis l'oggetto, devo verificare se l'xml passato è
well-formed...IE=>documentElement=null, Gecko=>PARSEERROR
 var DE=objRis.documentElement;
 if(!DE||DE.tagName.toUpperCase()=="PARSERERROR") return null;
 return objRis;
} //getXmlDocument
Cioé: le function tipo la getXmlHttp o getXmlDocument sono uniche, ma le
function js sono tante...
-- 
"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.

 funziona correttamente):
In che senso funziona correttamente? Cosa ci fai, dopo, con quel
getXmlDocument? Non ha senso che tu faccia restituire una stringa.
getXmlDocument deve restituire un documento XML.
Alla peggio puoi fare che se il documento xml restituito è null, prende la
stringa. Ma NON nella funzione che deve restituire un documento XML... Anche
perché, non so cosa ci devi fare (suppongo solo inviarlo via http, a questo
punto), ma una cosa del genere:
var doc = getXmlDocument(xml);
if (doc!=null)
	alert(doc.documentElement.tagName);
Ti darebbe un errore madornale.
La funzione getXmlDocument è generica, alla peggio avresti potuto fare nel
tuo caso:
	var doc = getXmlDocument(xml);
	http.send(doc||xml);
Nel caso di null ti inviava la stringa xml.
Bisogna vedere se a Safari va bene inviare un xml in quel modo, a questo
punto. Magari vuole che sia impostato il content type in modo esplicito.


 getXmlDocument deve restituire un documento XML.
faccio esattamente quello che faccio se restituisce un XmlDocument. 
Non chiedermi il perché, perché come vedi come commento ho indicato che è
"per Opera, che ha una gestione assurda del DOMParser", ma acc... non mi
sono scritto esattamente il perché e per quali versioni (magari con la 9
ciò non è più necessario).
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 faccio esattamente quello che faccio se restituisce un XmlDocument. 
Si, ma non hai detto cosa.
Restituisci una stringa, ergo non è un oggetto XmlDocument, ergo non ha i
metodi e proprietà di un oggetto XmlDocument bensì di una stringa.
Quindi non puoi manipolarne il DOM, non puoi farci assolutamente nulla di
quello che faresti su un oggetto XmlDocument. In quanto è una stringa.
Ora, l'unica cosa che mi viene in mente che tu possa farci, su due piedi, è
passarlo via XmlHttpRequest; come ti ho mostrato nell'esempio.


 Si, ma non hai detto cosa.
carico e invio:
	xmlDocument=getXmlDocument(P);
	if(!xmlDocument) {
		alert("Attenzione: si è verificato un errore.\n\nSi prega di
riprovare.\n\nSe il problema dovesse persistere inviare una mail a
dom...@editaliaspa.it
.");
		return false;
	}//P non è well-formed...
	OpenXmlHttp(XmlHttp,xmlDocument,"RoundTrip/XmlLogin.aspx");
e, restituendo una stringa (come nel caso di cui si parla) funziona
correttamente.


 correttamente.
Certo, stai inviando come dati in POST una stringa che poi verrà
interpretata come file XML.
C'è da vedere se questo è un passaggio che digerisce poco Safari, e perché.
Magari vuole il content type esplicito, come dicevo in precedenza.
Bisognerebbe vedere cosa ti arriva lato server quando è Safari a farti la
richiesta.


 Gran belle rotture di scatole, ma ci si convive.
mi rifai un test?
l'idea è stata questa:
function getXmlDocument(s) {
 if(!window.opera && !window.ActiveXObject && typeof DOMParser!="object")
  window.DOMParser=new _domParser();
 if(typeof DOMParser=="object")
  objRis=new window.DOMParser().parseFromString(s, 'text/xml');
  .....
oggetto _domParser:
function _domParser() {
 this.parseFromString=function(str,contentType) {
  var req=new XmlHttpRequest();
  if(!req) return null;
  req.open("GET","data:"+contentType+";charset=utf-8," +
encodeURIComponent(str), false);
  if (req.overrideMimeType) 
   req.overrideMimeType(contentType);
  req.send(null);
  return req.responseXML;
 }
 return this;
}
il problema è che non posso testarla...


 mi rifai un test?
dimenticato: 
www.primestore.it
 (non usare la modalità debug che ho
modificato i js inline)
-- 
"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.

 undefined value alla riga 68, sorry... (è sempre lei)
vedi qualcosa che non va nella function che ho fatto? dovrebbe restituire
in teoria un XmlDocument valido per Safari ...


 l'idea è stata questa:
Ma a te non serve creare un oggetto XmlDocument. Leggi il mio post a
riguardo.
Ho trovato anche io quel codice a giro, che appunto fa uso di XmlHttpRequest
come ti dicevo, ma nel tuo caso è del tutto superfluo (in verità, fai un
passaggio in più, dato che poi XmlHttpRequest deve ritrasformare l'oggetto
XmlDocument che passi come parametro in stringa da inviare).


 riguardo.
sě, ma speravo sistemasse, visto che l'invio della semplice stringa non
funziona (non ho tempo di verificare server-side cosa arriva, senza avere
un safari sotto mano č un lavoraccio).
amen, mi spiace per gli utenti di safari; se trovo un modo per beccarlo
metto un bell'alert ("mi spiace, anziché Safari usa un browser che, a suo
piacimento, usi o non usi xmlhttp, ma non un browser che fa finta di usarlo
ma poi non segue alcun standard").
Altrimenti non useranno i miei siti per ora.


 ma poi non segue alcun standard").
Esagerato...


 posso passargli anche quello MSN: sembrolacarta (at) 
hotmail.com
comodo ... solo che io non ho MSN :-/
se non ne usciamo neanche così mi farò un profilo volante (MSN).
Anzi, forse lo avevo fatto tempo fa, vedo se riesco a recuperare login e
password.


 Se devi farti un profilo fattelo AIM (
www.aim.com
) o jabber, meglio.
eh, qua al lavoro usano già tutti questo msn, mi sa che mi tocca ...
faccio un profilo e provo a chiamarti (qualunque cosa voglia dire, mò
installo questo msn e ci dò un occhio)
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 posso passargli anche quello MSN: sembrolacarta (at) 
hotmail.com
creato c.larghi at 
editaliaspa.it
ti ho aggiunto, mi dice "Non in linea"
