如何将richtext生成的html内容从jsp传递给js文件

时间:2015-12-15 08:04:08

标签: cq5 richtext

我有一个richtext组件,我输入了#34; foo&#34;到richtext组件,它生成 <p>foo</p>,我尝试使用以下代码将此生成的内容从JSP传递给JS。

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

以上行抛出&#34;未终止的字符串文字&#34;错误,因为JS变量包含

    ptagstarts foo ptagends

我在JS中使用了这个值,因为我在其他页面中也需要这个变量。 我可以知道如何删除此错误。

1 个答案:

答案 0 :(得分:1)

根据您所写的内容,似乎您的 jspvariable 字符串</script>。 Html解析器将其视为脚本块的结尾,并且您获得了无效的脚本阻止。

您可以查看您的网页来源以确定我是对的。

正如托马斯所说,你可以逃避你的内容。但只要这个内容由用户提供,我就会使用XssApi来防止xss攻击。

所以它会是这样的:

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

或者:

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

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

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

更新1

另外,正如我在评论中写的那样,很高兴看到你从richtext组件中提取内容的方式,因为我认为,有一种更好的方法可以做到这一点,所以你只能得到没有其他内容的文本