我有类似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来转义单引号,但它不适用于双引号。
答案 0 :(得分:2)
问题是您在使用相同字符分隔的HTML属性值中使用"
个字符。
onclick="javascript:setPName('TEST\" <!-- attribute value ends here -->
JavaScript无关紧要。
您需要转义HTML("
)而不是JS。
您可以通过撰写unobtrusive JavaScript完全避免此问题。
答案 1 :(得分:0)
将[']改为[“],试试看。(请删除”javascript:“)
stringBuffer.append("<a onclick=\"setPName(\""+StringEscapeUtils.escapeJavaScript(tmpResult)+"\");\"><small> "+StringEscapeUtils.escapeHtml(tmpResult)+"</small></a>");
或者将值设置为attribute(param)。
stringBuffer.append("<a param=\""+StringEscapeUtils.escapeHtml(tmpResult)+"\" onclick=\"setPName(this.getAttribute('param'))\"><small> "+StringEscapeUtils.escapeHtml(tmpResult)+"</small></a>");