在js中转义双引号和其他特殊字符

时间:2012-11-01 07:44:58

标签: java javascript html jsp

我有类似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来转义单引号,但它不适用于双引号。

2 个答案:

答案 0 :(得分:2)

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

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

JavaScript无关紧要。

您需要转义HTML(&quot;)而不是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>");