我有以下属性字符串
GET 50% OFF ANY M'EDIUM OR L"AR"GE PIZZA!
我在HTML onclick标记中使用它,如此
onclick="trackPromoCta(encodeURI(${properties.ctaTwoTextRight @ context='text'}));"
然而,这会输出无效的html。我尝试了@context of scriptString,但它只是内部JavaScript而不是内部HTML标记。我也尝试了所有其他选项,但实际上没有一个选项可以转义特殊字符来呈现HTML。
我看到有人曾经使用@format在字符串中搜索这些字符并将其转义为HTML但我无法找到如何使用@format来执行此操作。
预期输出应为
onclick="trackPromoCta(encodeURI('GET 50% OFF ANY M'EDIUM OR L"AR"GE PIZZA!'));"
答案 0 :(得分:0)
@context值“text”,“html”或“attribute”将在生成的html中返回编码值。根据文档,text
对所有HTML特殊字符进行编码。
如果您使用“查看页面源”而不是通过“检查开发人员工具的元素”来查看您的html代码。您将看到预期的结果。
onclick="trackPromoCta(encodeURI('GET 50% OFF ANY M'EDIUM OR L"AR"GE PIZZA!'));"
参考: https://helpx.adobe.com/experience-manager/htl/using/expression-language.html
答案 1 :(得分:0)
查看显示上下文的HTL规范:https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md#121-display-context
您需要的是scriptString
,因为您的字符串属性最终将用作javascript字符串文字。
${properties.jcr:title @ context='scriptString'} <!--/* Applies JavaScript string escaping */-->
此外,您需要用单引号括起HTL表达式,例如:
var str = '${'this is a js string literla' @ context='scriptString'}'
特定示例的HTL代码为:
onclick="trackPromoCta(encodeURI('${properties.ctaTwoTextRight @ context='scriptString'}'));"