Ошибка JavaScript из-за скорости перевода строки
Я использую 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-компиляции, но по-прежнему показывать ее на полной отрендеренной странице?
Хорошо, я решил это с помощью EscapeTool от Velocity.
В сочетании с ответом от 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>
-Tag, но я еще не проверял это.
Так же возможно было бы:
var exampleText = '$escapeTool.java($question.answer.data).replace("\n","<br />")';
Протестировал -> работает!
1 ответ
Извините, но новые строки в JavaScript не принимаются, не знаю, как выглядит ваш шаблон, но если вы действительно не можете заменить символы новой строки на \n или <br>
Вы можете сделать трюк:
В шаблоне визуализируем содержимое, поступающее из базы данных в скрытый div:
<div id="example-text" style="display:none">$question.answer.data</div>
В вашем коде JavaScript прочитайте содержимое div в вашей переменной:
var exampleText = document.getElementById('example-text').innerHTML;