如何将富文本生成的 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 组件中提取内容的方式,因为我认为,有更好的方法可以做到这一点,因此您将只获得文本而没有还有什么。
我有一个富文本组件,我将输入作为 "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 组件中提取内容的方式,因为我认为,有更好的方法可以做到这一点,因此您将只获得文本而没有还有什么。