Java js中的转义双引号和其他特殊字符
我有一些类似java的东西Java js中的转义双引号和其他特殊字符,java,javascript,html,jsp,Java,Javascript,Html,Jsp,我有一些类似java的东西 stringBuffer.append("<a onclick=\"javascript:setPName('"+StringEscapeUtils.escapeJavaScript(tmpResult)+"');\"><small> "+StringEscapeUtils.escapeJavaScript(tmpResult)+"</small></a>"); stringBuffer.append(“+String
stringBuffer.append("<a onclick=\"javascript:setPName('"+StringEscapeUtils.escapeJavaScript(tmpResult)+"');\"><small> "+StringEscapeUtils.escapeJavaScript(tmpResult)+"</small></a>");
stringBuffer.append(“+StringEscapeUtils.escapeJavaScript(tmprelt)+”);
在Firebug的控制台上检查时,它是正确的。但当我从IE开发者工具检查时,我得到了以下信息:
TEST\“AKHIL
问题是浏览器仍然无法识别它。
我曾使用StringEscapeUtils.escapeJavaScript来转义单引号,但它不适用于双引号。问题在于,您在用相同字符分隔的HTML属性值中使用了
“
字符
onclick="javascript:setPName('TEST\" <!-- attribute value ends here -->
onclick=“javascript:setPName('TEST\”
JavaScript是不相关的
您需要转义为HTML(“
)而不是JS
您可以通过编写来完全避免此问题。将[']更改为[“],试试看。(请删除“javascript:”)
stringBuffer.append(“+StringEscapeUtils.escapeHtml(tmpResult)+”);
或将值设置为属性(param)
stringBuffer.append(“+StringEscapeUtils.escapeHtml(tmpResult)+”);
那是什么javascript:
在做什么?这是毫无意义的,因为没有循环可以中断或继续。请查看[this][1]帖子。[1]:然后onclick属性将具有值javascript:setPName(
),这将使问题变得更糟!
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>");