比如
<script language="javascript">
var scriptVar=<%=javaVar%>;
</scipt>通常这种情况下是正确的,但如果变量javaVar中,含有回车和引号时,就会报错,因为在客户端被换了行,或引号异常,向高手讨教一个java函数,进行包装这种变量
<script language="javascript">
var scriptVar=<%=javaVar%>;
</scipt>通常这种情况下是正确的,但如果变量javaVar中,含有回车和引号时,就会报错,因为在客户端被换了行,或引号异常,向高手讨教一个java函数,进行包装这种变量
public static String dvHTMLEncode(String fString){
if(!fString.equals("null") && fString!=null){
fString = replace(fString, ">", ">");
fString = replace(fString, "<", "<");
fString = replace(fString, "&", "&");
//fString = replace(fString, "&nbsp;", "<I></I> ");
fString = replace(fString, " ", " ");
fString = replace(fString, "\"", """);
fString = replace(fString, "\'", "'");
fString = replace(fString, "\r", "");
//fString = replace(fString, CHR(10) & CHR(10), "</P><P> ");
fString = replace(fString, "\n", "<BR> ");
fString = replace(fString, "\\", "\");
}
return fString;
}
如果要转化为script支持的,你就以按照上面的参考一下,javascript中特殊字符有
\b ----退格
\f ----走纸换页
\n ----换行
\r ----回车
\t ----横向跳格 (Ctrl-I)
\' ----单引号
\" ----双引号
\\ ----反斜杠
不过离我的目标还有些距离,我的意思是这个样的,在我的代码里面有这么一行:
<a href="#" onclick="showPrint('<%=spaceStr%>')">打印</a>
而变量spaceStr有这么一个值:spaceStr=请将"看广州活动"通知电子版给一份我,谢谢!<br>这个样的化,客户端代码就变成了:
<a href="#" onclick="showPrint('请将"看广州活动"通知电子版给一份我,谢谢!<br>')">打印</a>Html里面的"和javascript函数的就冲突了,会报脚本错误,但是如果将这个变量放到textarea里,就没事,
比如
<textarea name="mytextarea" id="mytextarea"><%=spaceStr%></textarea>
这时在客户端,javascript就可以获得mytextarea的值,
<script language=javascript>
var me=document.getElementById("mytextarea");
alert(me);
</script>
这个样的话,这个特殊的java变量就放到了javascript变量里了,我的意思是为什么,这种间接的方法能够获得java变量,直接就不行啊,
到底用什么方法才可以解决呢,个人感觉应该有个java函数用来转换,第一个真正解决这个问题的至少给分50,其他酌情给分,不够再加。
这样就行,onclick属性不用加引号。回车换行的,用javaStr.replaceAll("\r\n","");去掉。
将java变量里面的作如下替换:
"----------->\"
'----------->\'
\n---------->\\n
\r---------->\\r
这样java变量输出到客户端的时候,引号和换行,就不会有问题了,可是这又要用到正则表达式,
<%!
public static String javaToScript(String src) {
src=src.replaceAll("\n","\\n");
src=src.replaceAll("\r","\\r");
src=src.replaceAll("\"","\\\"");
src=src.replaceAll("\'","\\\'");
return src;
}
%>
这个样子不行,望高手赐教
src=src.replaceAll("\r","\\\\r");
src=src.replaceAll("\"","\\\\\"");
src=src.replaceAll("\'","\\\\\'");