Hanya cepat, tetapi ingin memastikan saya menangkap variasi lintas platform.
Saya suka mengubah baris baru yang dimasukkan ke dalam area teks menjadi [koma], sehingga hasilnya dapat direpresentasikan dalam satu baris, pertanyaan saya ...
Saat ini, mengirim dari google chrome, ketika saya melihat nilainya, saya merasa itu digunakan \r\n
untuk baris baru. Jika saya mengganti, \r\n
saya tahu ini akan berfungsi untuk chrome di windows 7, tetapi bagaimana dengan platform lain, apakah ada variasi tentang apa yang akan disisipkan browser lain sebagai baris baru di dalam area teks?
Jawaban:
Berdasarkan spesifikasi HTML, browser diharuskan untuk mengkanonikalisasi jeda baris pada input pengguna ke CR LF (
\r\n
), dan menurut saya tidak ada browser yang melakukan kesalahan ini. Referensi: klausul 17.13.4 Jenis konten formulir dalam spesifikasi HTML 4.01.Dalam draf HTML5, situasinya lebih rumit, karena mereka juga menangani proses di dalam browser, bukan hanya data yang dikirim ke penangan formulir sisi server saat formulir dikirimkan. Menurut mereka (dan praktik browser), nilai
textarea
elemen ada dalam tiga varian:sumber
the user agent should allow the user to edit, insert, and remove text, and to insert and remove line breaks in the form of "LF" (U+000A) characters
.\n
), mungkin adalah apa yang disediakan oleh "API internal". Tidak ada referensi, ini hanya anggapan saya berdasarkan akal sehat.Berbicara secara khusus tentang textarea dalam formulir web, untuk semua textarea, di semua platform,
\r\n
akan berfungsi.Jika Anda menggunakan hal lain, Anda akan menyebabkan masalah dengan potong dan tempel pada platform Windows.
Jeda baris akan dikanonikalisasi oleh browser windows ketika formulir dikirimkan, tetapi jika Anda mengirim formulir ke browser dengan pemutusan baris
\n
, Anda akan menemukan bahwa teks tidak akan disalin dan ditempel dengan benar antara misalnya notepad dan textarea.Menariknya, terlepas dari konvensi akhir baris Unix
\n
, standar di sebagian besar protokol jaringan berbasis teks termasuk HTTP, SMTP, POP3, IMAP, dan sebagainya masih\r\n
. Ya, itu mungkin tidak masuk akal, tapi itulah sejarah dan standar yang berkembang untuk Anda!sumber
- Line Feed and Carriage Return
Entitas HTML ini akan memasukkan baris baru atau carriage return di dalam area teks.
sumber
Tampaknya, menurut spesifikasi HTML5 , properti nilai dari elemen textarea harus mengembalikan '\ r \ n' untuk baris baru:
Mengikuti tautan ke 'nilai' memperjelas bahwa ini merujuk ke properti nilai yang diakses di javascript:
Namun, di kelima browser utama (menggunakan Windows, 27/11/2015), jika '\ r \ n' ditulis ke textarea, '\ r' dihilangkan. (Untuk menguji: var e = document.createElement ('textarea'); e.value = '\ r \ n'; alert (e.value == '\ n');) Ini berlaku untuk IE sejak v9. Sebelumnya, IE mengembalikan '\ r \ n' dan mengubah '\ r' dan '\ n' menjadi '\ r \ n' (yang merupakan spesifikasi HTML5). Jadi ... saya bingung.
Agar aman, biasanya cukup menggunakan '\ r? \ N' dalam ekspresi reguler, bukan hanya '\ n', tetapi jika urutan baris baru harus diketahui, pengujian seperti di atas dapat dilakukan dalam aplikasi.
sumber
textarea
. 1. Badan Permintaan hanya akan memiliki \ r \ n 2. Nilai JS hanya akan memiliki \ n terlepas dari apakah Anda menggunakan \ r, \ r \ n, atau \ n saat mengetik. Ini juga cocok dengan temuan Anda dengan IE9 +.