- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个 FTL 有 -
<a href='javascript:func("${event.title}");'>Link</a>
当值带有撇号时,例如 Norman'S Birthday
- 它坏了。
我们使用了 js_string
修复它 -
<a href="javascript:func('${event.title?js_string}');">Link</a>
但我们还必须更改 $expression
周围的双引号单引号 - 这不适用于双引号。
问题 -
有没有办法用 $expression
周围的原始双引号来解决这个问题? ?
有点像 -
<a href='javascript:func("${event.title?js_string}");'>Link</a>
请注意以上内容无效。
最佳答案
您需要在此处应用两种转义:JavaScript 字符串转义和 HTML 转义。您需要两者,因为这两种格式是独立的,并且 JavaScript 嵌入到 HTML 中。
怎么做...原始方法是 event.title?js_string?html
, 但很容易忘记添加 ?html
,所以不要那样做。相反,使用自动转义(参见 https://freemarker.apache.org/docs/dgui_quickstart_template.html#dgui_quickstart_template_autoescaping )。如果由于某种原因你不能使用这种形式的自动转义(比如你正在使用一些旧的 FreeMarker 版本并且不允许升级),请将整个模板放入 <#escape x as x?html>...</#escape>
.在这两种情况下,您都可以写 ${event.title?js_string}
, 它会正常工作。
但是,如果您使用的是 #escape
, 确保 incompatible_improvements
设置(参见 https://freemarker.apache.org/docs/pgui_config_incompatible_improvements.html )至少为 2.3.20,否则 ?html
不会逃脱 '
.
关于javascript - 带有双引号表达式的 js_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49353853/
我们有一个 FTL 有 - Link 当值带有撇号时,例如 Norman'S Birthday - 它坏了。 我们使用了 js_string修复它 - Link 但我们还必须更改 $expressio
我是一名优秀的程序员,十分优秀!