我有一些vb代码如下:
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
sb.Append("<script type=""text/javascript"">")
sb.Append(" function addRow() {")
sb.Append(" var div = document.createElement('div');")
sb.Append(" div.className = 'panel panel-info';")
sb.Append(" div.innerHTML = '")
For i = 0 To dtf.Rows.Count - 1
Dim NAME As String = dtf.Rows(i)(0).ToString
Dim Datee As String = dtf.Rows(i)(3).ToString
Dim commentsth As String = dtf.Rows(i)(2).ToString
Dim urlh As String = dtf.Rows(i)(1).ToString
sb.Append("<div class=""panel-heading"">")
sb.Append(" <h4 class=""panel-title"">")
sb.Append(" <a data-toggle=""collapse"" data-parent=""#accordion"" href=""" & urlh & """>")
sb.Append(" " & NAME & " " & Datee & "</a>")
sb.Append(" </h4>")
sb.Append(" </div>")
sb.Append(" <div id=""collapse" & i & """ class=""panel-collapse collapse in"">")
sb.Append(" <div class=""panel-body"">")
sb.Append(" " & commentsth & "")
sb.Append(" </div>")
sb.Append(" </div>")
Next
sb.Append("';")
sb.Append(" document.getElementById('WorldNews').appendChild(div);}")
sb.Append("</script>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", sb.ToString())
此代码用于将java脚本代码附加到网页。
我的问题是,例如变量
commentsth
包含字符
' or " or \
它会影响输出,因为'或'可能是字符串的结束标记
即:如果commentsth =“他是......”那么问题就会发生..
" '<div class=""panel-body"">" & he's.. & ""
我该如何避免这种情况。
答案 0 :(得分:0)
对变量使用HTML编码字符串,例如将空格转换为%20:
sb.Append(" " & Uri.EscapeDataString(commentsth) & "")
同样在脚本中,您可能希望包含一些内容,以便在将字符串实际附加到WorldNews
之前将其解码回正常:
sb.Append(" div.innerHTML = decodeURI('")
...
sb.Append("');")
答案 1 :(得分:0)
您可以分别用'
,/
和"
替换'
,/
和"
字符,生成的HTML应该是知道那些是什么。
对于您要替换的每个字符都是这样的,只需使用它的ASCII HTML字符代码:
commentsth = commentsth.Replace("'", "'")
答案 2 :(得分:0)
创建一个替换不需要的字符的函数,并将其添加到代码中,如下所示:
...
sb.Append(" <div class=""panel-body"">")
sb.Append(" " & ReplaceSpecials(commentsth) & "")
sb.Append(" </div>")
...
示例:
Function ReplaceSpecials(ByVal Text As String) As String
Return Text.Replace("'", "").Replace("\", "")
End Function