Vai al contenuto

Javascript & Safari: non va a capo con \n


Barcaro

Messaggi raccomandati

Ho fatto un piccolo script JS che scrive automaticamente in una textarea e che alla fine di ogni "istanza" di scrittura dovrebbe andare a capo. Con Mozilla Firefox e IE 6-7 per Windows tutto ok, con Safari e derivati (ho provato con Shiira & Safari) il carattere \n apparentemente non viene scritto.

Il problema si presenta anche quando vado a scrivere in un alert/confirm/prompt, con la differenza che qui Safari va correttamente a capo mentre Shiira non mostra la riga dopo \n.

E' un problema aggirabile in qualche maniera? Ho sbagliato qualcosa? il codice JS è il seguente (ordine è il nome della textarea):

function ordineScrivi(testo){
   var n_pezzi = prompt(testo+"\nNumero articoli da inserire:");
   if(n_pezzi == 0 || n_pezzi == null){ return; }
   if (document.getElementById)
   {
       document.getElementById('ordine').innerHTML += testo+n_pezzi+'\r\n';
   }
}

Link al commento
Condividi su altri siti

Ma anche con la textarea? Se gli dico di scrivere <br /> nella textarea mi scrive il codice, io voglio semplicemente che mi vada a capo nella textarea, con Firefox e IE funziona correttamente con Safari invece no.

edit: sono un babbeo, ho provato or ora e funziona, grazie a tutti :fiorellino:

Link al commento
Condividi su altri siti

l'indicazione dell'a-capo deve essere realizzata in modo coerente al contesto

se è un a capo che va reso in un testo html e forzato nel corpo della pagine web allora devi usare <br />

se invece è un a capo che va reso nell'ambito di un puro testo ASCII (es in un textarea di una form), allora devi usare \n o comunque una sequenza di a capo analoga

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Barcaro scusa... nn avevo letto che eri in una textarea, pensavo fosse testo semplice di una pagina... sarebbe più semplice fare un div apposito e poi scriverci dentro (con getelementbyid.innerhtml)... tanto il div lo puoi trattare come una textarea (dimensione fissa e scroll) e ha il vantaggio che "accetta" parametri html (quindi i <br/>, testo formattato, eccetera)!

Cmq io ho fatto una prova e ho notato che il carattere \n alla fine della riga è sgradito a safari... se invece di '\n' scrivi '\n ' (nota lo spazio dopo la n!!!), in safari funziona correttamente... in firefox la nuova riga inizia con uno spazio bianco (ovviamente).

A 'sto punto devi trovare un artificio perchè safari scriva un carattere in più alla fine della riga, dopo \n. Quindi una funzioncina che controlli il browser (ce ne sono a decine su internet).

CIAO

:fiorellino:

MacBook Pro 1.83GHz - 1.5GB ram

Link al commento
Condividi su altri siti

Barcaro scusa... nn avevo letto che eri in una textarea, pensavo fosse testo semplice di una pagina... sarebbe più semplice fare un div apposito e poi scriverci dentro (con getelementbyid.innerhtml)... tanto il div lo puoi trattare come una textarea (dimensione fissa e scroll) e ha il vantaggio che "accetta" parametri html (quindi i <br/>, testo formattato, eccetera)!

Cmq io ho fatto una prova e ho notato che il carattere \n alla fine della riga è sgradito a safari... se invece di '\n' scrivi '\n ' (nota lo spazio dopo la n!!!), in safari funziona correttamente... in firefox la nuova riga inizia con uno spazio bianco (ovviamente).

A 'sto punto devi trovare un artificio perchè safari scriva un carattere in più alla fine della riga, dopo \n. Quindi una funzioncina che controlli il browser (ce ne sono a decine su internet).

CIAO

:fiorellino:

Mi serve che l'utente possa modificare direttamente la textarea "a mano" dunque la soluzione del div non è indicata per il mio problema.

Dall'altra parte non sono molto propenso ad appesantire il codice con un controllo browser. Bel dilemma...

Comunque ora provo ad approfondire il concetto del '\n ' e vi fo sapere.

Link al commento
Condividi su altri siti

function ordineScrivi(testo){
var n_pezzi = prompt(testo+'\n Numero articoli da inserire:');
if(n_pezzi == 0 || n_pezzi == null){ return; }
var str = testo+n_pezzi;
var regEx = /Safari/;
if(vers.match(regEx)){
//	alert("Browser Safari based");
	str += '\n ';
}else{
	str += '\n';
}
if (document.getElementById)
{

	document.getElementById('ordine').innerHTML += str;
}
}

Per ora ho risolto così. Grazie ancora a tutti:ciao:

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...