मैंने अभी जावास्क्रिप्ट के इस मूर्खतापूर्ण बिट का उपयोग करके कुछ ब्राउज़रों का परीक्षण किया है:
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 और ओपेरा 9 \r\n
। अन्य सभी ब्राउज़रों का मैंने परीक्षण किया (विंडोज पर सफारी 4 और फ़ायरफ़ॉक्स 3.5, और लिनक्स पर फ़ायरफ़ॉक्स 3.0) का उपयोग करें \n
। \n
मान सेट करते समय वे सभी ठीक से संभाल सकते हैं , हालांकि IE और ओपेरा उसको \r\n
फिर से आंतरिक रूप से बदल देंगे । जावास्क्रिप्ट में लाइन एंडिंग नामक कुछ और विवरणों के साथ साइटप्ले लेख है ।
यह भी ध्यान दें कि यह 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);