如何将富文本生成的 html 内容从 jsp 传递到 js 文件

how to pass richtext generated html content from jsp to js file

我有一个富文本组件,我将输入作为 "foo" 给富文本组件,它生成了 <p>foo</p>,我正在尝试使用以下代码将此生成的内容从 JSP 传递给 JS。

    <script>
    var jsvariable = '<%=jspvariable%>'
    </script>

上面一行抛出"unterminated string literal"错误,因为JS变量包含

    ptagstarts foo ptagends

我正在使用 JS 中的值,因为我在其他页面中也需要这个变量。 我可以知道我们如何消除这个错误吗?

从您所写的看来,您的 jspvariable 字符串 </script> 中有。 Html 解析器将其视为 script 块的结尾,并且你得到无效的 script 块。

您可以检查页面的来源以确保我是对的。

正如 Thomas 所建议的,您可以转义您的内容。但只要用户提供此内容,我就会使用 XssApi,以防止 xss 攻击。

所以它会是这样的:

var jsvariable = '<%=xssApi.encodeForJSString(jspvariable)%>'

或:

var jsvariable = '<%=xssApi.filterHTML(jspvariable)%>'

在第一种情况下,您将从 richtext 组件中获取 <script> 块到您的 js 变量中。它会被编码,你不会得到这个错误,但我认为你不需要它。

在第二种情况下,您应该只从您的组件中获取文本值。

更新 1

此外,正如我在评论中写给您的那样,很高兴看到您从 richtext 组件中提取内容的方式,因为我认为,有更好的方法可以做到这一点,因此您将只获得文本而没有还有什么。