Zac*_*ach 4 perl template-toolkit
你有没有逃过模板工具包中的单引号来获取必要的javascript处理程序?如果是这样,你怎么做.
[% SET s = "A'B'C" %]
<a href="/abc.html" onclick="popup('[% s | html_entity %]')">ABC</a>
Run Code Online (Sandbox Code Playgroud)
html_entity显然不起作用,因为它只处理双引号.你是怎么做到的?
我不使用内联事件处理程序 - 出于同样的原因我拒绝使用stylecss属性.Jquery只是简单地class="foo"在html和$('.foo').click( function () {} )外部.js文件中进行操作.
但是,为了尽我所能回答这个问题,请查看这些文档Template::Filter中的核心文档.
似乎你可以这样做[% s | replace( "'", "\'" ) %],以逃避单引号.或者你可以写一个更复杂的消毒javascript解析器,它只允许函数调用,并制作你自己的Template :: Filter
2018年更新供参考:
TT 有一种方法可以解决这个问题,称为 sqote 来转义单引号,dquote 来转义双引号。
[% tim = "Tim O'Reilly" %]
[% tim.squote %] # Tim O\'Reilly
Run Code Online (Sandbox Code Playgroud)
有问题的链接将类似于:
<a href="/abc.html" onclick="popup('[% s.squote %]')">ABC</a>
Run Code Online (Sandbox Code Playgroud)
http://www.template-toolkit.org/docs/manual/VMethods.html#section_squote