ฉันเพิ่งทดสอบเบราว์เซอร์บางตัวโดยใช้ JavaScript ที่งี่เง่า:
function log_newline(msg, test_value) {
if (!test_value) {
test_value = document.getElementById('test').value;
}
console.log(msg + ': ' + (test_value.match(/\r/) ? 'CR' : '')
+ ' ' + (test_value.match(/\n/) ? 'LF' : ''));
}
log_newline('HTML source');
log_newline('JS string', "foo\nbar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">
</textarea>
IE8 และ Opera 9 บน Windows \r\n
ใช้ ทั้งหมดที่เบราว์เซอร์อื่น ๆ ที่ผมทดสอบ (Safari 4 และ Firefox 3.5 บน Windows, และ Firefox 3.0 บน Linux) \n
การใช้งาน พวกเขาทั้งหมดสามารถจัดการได้\n
ดีเมื่อตั้งค่าแม้ว่า IE และ Opera จะแปลงกลับไปเป็น\r\n
ภายในอีกครั้ง มีบทความ SitePoint มีรายละเอียดเพิ่มเติมบางอย่างที่เรียกว่าเป็นตอนจบสายใน Javascript
โปรดทราบว่าสิ่งนี้ไม่เกี่ยวข้องกับการสิ้นสุดบรรทัดจริงในไฟล์ HTML (ทั้งคู่\n
และ\r\n
ให้ผลลัพธ์เหมือนกัน)
เมื่อส่งแบบฟอร์มเบราว์เซอร์ทั้งหมดกำหนดบรรทัดใหม่ให้เป็นแบบ%0D%0A
เข้ารหัส URL หากต้องการดูว่าโหลดเช่นdata:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
และกดปุ่มส่ง (เบราว์เซอร์บางตัวบล็อกการโหลดหน้าที่ส่ง แต่คุณสามารถดูค่าฟอร์มที่เข้ารหัส URL ในคอนโซล)
ฉันไม่คิดว่าคุณจะต้องทำการตัดสินใจใด ๆ หากคุณต้องการแยกข้อความในบรรทัดใหม่คุณสามารถทำสิ่งนี้:
lines = foo.value.split(/\r\n|\r|\n/g);