我们的Web应用程序允许用户向我们的服务器提交富文本(带有一些列入白名单的HTML标签)。客户端表单使用CKEDITOR捕获富文本。
用户提交输入后,我需要在单独的页面上检索富文本以进行呈现。渲染必须动态进行。准备好文档后,我将获取服务器端值,创建一个div元素,然后将富文本格式转储到div的innerHTML属性中。
IE :
var container = document.createElement('div');
div.innerHTML = '{!server_side_value}'; // String interpolation to retrieve the user's input
服务器端富文本以换行符存储的问题。当我尝试分配innerHTML属性时,出现“意外令牌ILLEGAL”错误。我无法将字符串分配给innerHTML,也不能将其作为参数传递给使用RegEx去除新行字符的函数。两次尝试均导致“意外令牌”错误。
我的问题是:由于JavaScript具有换行符,因此不可能在JavaScript中按摩富文本值吗?我在第3方平台上工作,因此如何将用户输入的存储详细信息隐藏在黑匣子中。但是,我想我可以添加一个钩子以在保存之前对数据进行预处理。无论哪种情况,我都很好奇,如果服务器端字符串返回换行符,该如何处理JavaScript。
编辑:这是控制台中突出显示的行。我之所以认为它与换行符有关,是因为第一个'p'标记与第二个'p'标记之间存在空格。我知道JavaScript多行字符串必须使用+运算符进行串联。另一个SO用户也遇到类似的问题:Javascript:appendChild()出现意外的令牌ILLEGAL错误
var richText = '<p class="p1"><span class="s1">Here is some text.</span></p>
<p class="p1"><span class="s1">Here is some more text</span><br><br></p>';
如果您将确切的内容填充到js var中,是的,它将关心换行。如果您是通过javascript从服务器上获取的,则应该不是问题。
由于您未指定服务器端语言,因此我将使用C#/ Razor / MVC的示例
var richText = '@RichText' // this is going to fail
在这一点上,我会做@RichText.Replace("\r\n","")
什么
您的regex函数失败,因为它仍然是包含换行符的服务器端变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句