也许我只是想得太难了,但是我在弄清楚链接的 onClick 处理程序中的某些 JavaScript 代码中的字符串使用什么转义时遇到了问题。例子:
<a href="#" onclick="SelectSurveyItem('<%itemid%>', '<%itemname%>'); return false;">Select</a>
该<%itemid%>
和<%itemname%>
在哪里模板替换发生。我的问题是项目名称可以包含任何字符,包括单引号和双引号。目前,如果它包含单引号,它会破坏 JavaScript 代码。
我的第一个想法是使用模板语言的函数来 JavaScript 转义项目名称,它只是转义引号。这不会解决包含双引号的字符串的情况,这会破坏链接的 HTML。这个问题一般是怎么解决的?我是否需要 HTML 转义整个 onClick 处理程序?
如果是这样,那看起来真的很奇怪,因为模板语言的转义函数也会对括号、引号和分号进行 HTML 化......
此链接是为搜索结果页面中的每个结果生成的,因此无法在 JavaScript 标记内创建单独的方法,因为我需要为每个结果生成一个。
此外,我使用的是我工作的公司自己开发的模板引擎,因此特定于工具包的解决方案对我没有用。