首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带双引号表达式的js_string

带双引号表达式的js_string
EN

Stack Overflow用户
提问于 2018-03-18 23:22:43
回答 3查看 1.1K关注 0票数 1

我们有一辆超光速车-

<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>

注意,上面的内容不起作用。

EN

回答 3

Stack Overflow用户

发布于 2018-03-19 00:00:44

您需要在这里应用两种类型的转义: JavaScript字符串转义和HTML转义。您需要这两种格式,因为这两种格式是独立的,而且JavaScript是嵌入到HTML中的。

怎么做..。原始的方式是event.title?js_string?html,但是很容易忘记添加?html,所以不要这样做。相反,使用自动转义(参见autoescaping)。如果您由于某种原因不能使用这种形式的自动转义(比如您使用的是一些旧的FreeMarker版本,并且不允许升级),那么将整个模板放入<#escape x as x?html>...</#escape>中。在这两种情况下,您只需编写${event.title?js_string},它就能正常工作。

但是,如果您正在使用#escape,请确保incompatible_improvements设置(请参阅improvements.html)至少为2.3.20,否则?html不会逃避'

票数 2
EN

Stack Overflow用户

发布于 2018-03-18 23:27:48

修改event.title的值,以便用&apos;替换单引号,用&quot;替换双引号,这样您就不必担心您在其余部分中使用了哪种引号。

票数 0
EN

Stack Overflow用户

发布于 2020-01-29 07:58:07

?js_string应该在花括号{}之外。现在,如果要处理字符串中的单引号‘’,则应该在href值周围使用双引号“”,反之亦然。单引号和双引号不能在同一个字符串中使用,因此需要将它们替换为其他字符串。

解决办法:

<a href="javascript:func('${event.title!?js_string}');">Link</a>

在JavaScript中可以使用相同的表达式来处理特殊字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49353853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档