javascript - 跨浏览器 - 文本区域中的换行符

标签 javascript jquery html

在我的 Web 应用程序(JSP、JQuery...)中,有一个表单与其他字段一起有一个文本区域,用户可以在其中自由输入注释。该值按原样保存到数据库中。

当值有换行符并且被加载回文本区域时,就会出现问题;它有时“破坏”Jquery 代码。进一步解释:

使用 Jquery 将值加载到文本区域:

 $('#p_notas').text("value_from_db");

当用户按 Enter 键插入新段落时,结果值将包含一个换行符(或多个字符)。这个字符就是问题所在,因为它因浏览器而异,我还没有找到是哪个字符导致了问题。

我得到的错误是控制台错误:SyntaxError:未终止的字符串文字。页面无法正确加载。

我无法重现该问题。我尝试使用 Chrome、Firefox 和 IE Edge(使用用户代理和文档模式的多种组合)。 我们建议用户使用 IE8+、Firefox 或 Chrome,但我们无法控制。

我想知道是哪个 Angular 色导致了问题以及如何解决它。

谢谢

编辑:总结 - 不同浏览器的换行符有什么区别?我可以做些什么来使它们统一吗?

编辑2:查看调试器中的页面,我得到的是: 案例1(没问题)

$('#p_notas').text("This is the text I inserted \r\n More text");

案例 2(问题)

    $('#p_notas').text("This is the text I inserted 
More text");

在情况 2 中,我收到 Javascript 错误“SyntaxError:未终止的字符串文字。”因为它被解释为两行代码

编辑 3:@m02ph3u5 我尝试使用 '\r' '\n' '\r\n' '\n\r' 但无法重现该问题。

编辑4:我将尝试用“\n\r”替换所有换行符

编辑5:如果感兴趣,我所做的是在保存之前处理该值

value.replace(/(?:\r\n|\r(?=\n)|\n(?=\r))/g, '\n\r')

最佳答案

问题不在于浏览器,而在于操作系统。引用自this post :

So, using \r\n will ensure linebreaks on all major operating systems without issue.

这是一个nice read on the why :为什么操作系统以不同的方式实现换行符?

您可能遇到的问题是保存文本区域的值,然后返回该值(包括任何换行符)。您可以做的是在保存之前“标准化”该值,这样您就不必更改输出。换句话说:从文本区域获取值,执行查找和替换,并将每个可能出现的换行符 (\r,\n) 替换为适用于所有操作系统的\r\n 的值。然后,当您稍后从数据库获取值时,它总是正确的。

关于javascript - 跨浏览器 - 文本区域中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656219/

相关文章:

javascript - 如果 HTML 值位于包含带有 javascript 的特定 href 的类中,如何编辑 HTML 值?

javascript - Instagram API。 XMLHttpRequest 无法加载 URL。预检响应具有无效的 HTTP 状态代码 405

html - 强制 flexbox 容器内的图像填充/覆盖 100%

html - 嵌套的 Flexbox 拉伸(stretch)图像

javascript - Android 4.0.4 上的 webkit 焦点行为

javascript - 获取div相对于窗口的绝对位置

javascript - 在单元测试中,如何测试具有对象参数的函数?

javascript - 使用 Express Private Routes 使用react

jQuery - .getjson VS .ajax json

html - css 在背景图像中居中文本