0

我在java中有类似的东西

stringBuffer.append("<a onclick=\"javascript:setPName('"+StringEscapeUtils.escapeJavaScript(tmpResult)+"');\"><small> "+StringEscapeUtils.escapeJavaScript(tmpResult)+"</small></a>");

在 Firebug 的控制台上检查相同的内容时,它是正确的。但是当我从 IE 开发人员工具中检查时,我得到以下信息:

<A onclick="javascript:setPName('TEST\" AKHIL?);?><SMALL>TEST\"AKHIL</SMALL></A>

问题是浏览器仍然无法识别它。我曾使用 StringEscapeUtils.escapeJavaScript 来转义单引号,但它不适用于双引号。

4

2 回答 2

2

问题是您在以相同字符分隔的 HTML 属性值中"使用字符

onclick="javascript:setPName('TEST\" <!-- attribute value ends here -->

JavaScript 无关紧要。

您需要为 HTML ( &quot;) 而不是 JS 转义。

你可以通过编写不显眼的 JavaScript来完全避免这个问题。

于 2012-11-01T07:49:09.997 回答
0

把[']改成["],试试看。(请去掉"javascript:")

stringBuffer.append("<a onclick=\"setPName(\""+StringEscapeUtils.escapeJavaScript(tmpResult)+"\");\"><small> "+StringEscapeUtils.escapeHtml(tmpResult)+"</small></a>");

或者将值设置为属性(参数)。

stringBuffer.append("<a param=\""+StringEscapeUtils.escapeHtml(tmpResult)+"\" onclick=\"setPName(this.getAttribute('param'))\"><small> "+StringEscapeUtils.escapeHtml(tmpResult)+"</small></a>");
于 2012-11-01T07:52:35.813 回答