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は関係ありません。

&quot;JSではなくHTML()でエスケープする必要があります。

控えめなJavaScriptを作成することで、この問題を完全に回避できます。

于 2012-11-01T07:49:09.997 に答える
0

['] を ["] に変更してみてください。 ("javascript:" を削除してください)

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

または、属性 (param) に値を設定します。

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