javascript特殊符号

  1. javascript和JAVA一样,一些特殊字符需要转义   
  2.     
  3. 特别是在一些JSP网页的开发中,好多程序员经常会忘掉这点,   
  4. 例:   
  5. 1 <% List textList = (List)request.getAttribute("textList"); %>   
  6. 2 <script>   
  7. 3 <!--   
  8. 4 var txtList = new Array();   
  9. 5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
  10. 6 txtList[<%=i%>] = "<%=textList.get(i)%>";   
  11. 7 <% } %>   
  12. 8 -->   
  13. 9 </script>   
  14.     
  15. 这段JS就存在问题,未对特殊符号进行处理.有特殊符号的情况下有可能报JSERROR   
  16.     
  17. JAVASCRIPT中需要转义的有:   
  18.     
  19. 转义序列 字符    
  20. \b 退格    
  21. \f 走纸换页    
  22. \n 换行    
  23. \r 回车    
  24. \t 横向跳格 (Ctrl-I)    
  25. \' 单引号    
  26. \" 双引号    
  27. \\ 反斜杠    
  28.   
  29. 此外,对/符号我觉得也有必要进行处理,因为象 --></script> 这样的字符串也会使SCRIPT出错.   
  30.     
  31. 下面提供一个比较实用java的方法,做这个特殊符号的处理:   
  32.  1public class JavaScriptUtils {   
  33.  2 public static String javaScriptEscape(String input) {   
  34.  3  if (input == null) {   
  35.  4   return input;   
  36.  5  }   
  37.  6  StringBuffer filtered = new StringBuffer(input.length());   
  38.  7  char prevChar = '\u0000';   
  39.  8  char c;   
  40.  9  for (int i = 0; i < input.length(); i++) {   
  41. 10   c = input.charAt(i);   
  42. 11   if (c == '"') {   
  43. 12    filtered.append("\\\"");   
  44. 13   }   
  45. 14   else if (c == '\'') {   
  46. 15    filtered.append("\\'");   
  47. 16   }   
  48. 17   else if (c == '\\') {   
  49. 18    filtered.append("\\\\");   
  50. 19   }   
  51. 20   else if (c == '\t') {   
  52. 21    filtered.append("\\t");   
  53. 22   }   
  54. 23   else if (c == '\n') {   
  55. 24    if (prevChar != '\r') {   
  56. 25     filtered.append("\\n");   
  57. 26    }   
  58. 27   }   
  59. 28   else if (c == '\r') {   
  60. 29    filtered.append("\\n");   
  61. 30   } else if (c == '\f') {   
  62. 31                filtered.append("\\f");   
  63. 32  } else if (c == '/') {   
  64. 33                filtered.append("\\/");   
  65. 34            }   
  66. 35   else {   
  67. 36    filtered.append(c);   
  68. 37   }   
  69. 38   prevChar = c;   
  70. 39  }   
  71. 40  return filtered.toString();   
  72. 41 }   
  73. 42}   
  74. 43  
  75.   
  76. 上面的例子应改为:   
  77. 1 <% List textList = (List)request.getAttribute("textList"); %>   
  78. 2 <script>   
  79. 3 <!--   
  80. 4 var txtList = new Array();   
  81. 5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
  82. 6 txtList[<%=i%>] = "<%=JavaScriptUtils.javaScriptEscape(textList.get(i))%>";   
  83. 7 <% } %>   
  84. 8 -->   
  85. 9 </script>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值