我在速度模板中使用 JavaScript 代码,但它不起作用!
我使用此模板阅读内容并希望将其设置为 js 变量,但内容中有换行符,我收到以下错误:
SyntaxError:未终止的字符串文字
在呈现的代码中,您会看到错误:
var exampleText = 'This is the first line
and this is the second line.';
在原始代码中是这样写的:
var exampleText = '$question.answer.data';
var regularPanels = new A.Panel( {
bodyContent: exampleText,
collapsible: true,
collapsed: true,
headerContent: '$question.data' } ) .render('#regularPanels$counter$reserved-article-id.data$randomNamespace');
});
是否有可能忽略 js 编译的换行符,但仍将其显示在完整呈现的页面上?
好的,我在 Velocity 的EscapeTool的帮助下解决了这个问题。
结合emiliocai的答案,以下代码可以正常工作:
<div id="example-text" style="display:none;">
<p>$escapeTool.java($question.answer.data).replace("\n","<br />")</p>
</div>
<script type="text/javascript" charset="utf-8">
AUI().ready('aui-panel', function(A) {
var exampleText = document.getElementById('example-text').innerHTML;
var regularPanels = new A.Panel( {
bodyContent: exampleText,
collapsible: true,
collapsed: true,
headerContent: '$question.data' } ) .render('#regularPanels$counter$reserved-article-id.data$randomNamespace');
});
</script>
可能是,它可以在没有隐藏<div>
标签的情况下工作,但我还没有测试过。
所以也可能是:
var exampleText = '$escapeTool.java($question.answer.data).replace("\n","<br />")';
测试它-> 有效!