0

我有以下属性字符串

GET 50% OFF ANY M'EDIUM OR L"AR"GE PIZZA!

我在 HTML onclick 标记中使用它,就像这样

onclick="trackPromoCta(encodeURI(${properties.ctaTwoTextRight @ context='text'}));"

但是,这会输出无效的 html。我尝试了 scriptString 的@context 并且它转义但仅适用于 JavaScript 内部,而不适用于 HTML 标记内部。我也尝试了所有其他选项,但它们都没有真正转义用于呈现 HTML 的特殊字符。

我曾经看到有人使用@format 在字符串中搜索这些字符并将它们转义为HTML,但我不知道如何使用@format 来执行此操作。

预期的输出应该是

onclick="trackPromoCta(encodeURI('GET 50% OFF ANY M'EDIUM OR L"AR"GE PIZZA!'));"

4

2 回答 2

1

查看显示上下文的 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'}'));"
于 2018-02-14T19:52:01.680 回答
0

@context 值“text”、“html”或“attribute”将在生成的 html 中返回编码值。也根据文档,text对所有 HTML 特殊字符进行编码。

如果您使用“查看页面源代码”而不是“检查开发人员工具的元素”来浏览您的 html 代码。您将看到预期的结果。

onclick="trackPromoCta(encodeURI('GET 50% OFF ANY M&#39;EDIUM OR L&#34;AR&#34;GE PIZZA!'));"

参考: https ://helpx.adobe.com/experience-manager/htl/using/expression-language.html

于 2018-02-12T18:52:58.257 回答