我正在通过后台代码输出客户端函数调用
Page.ClientScript.RegisterStartupScript( this.GetType(), "supportItems", scriptCalls, true );
scriptCalls 包含对客户端函数的调用,该函数具有从数据库中获取的多个字符串参数,然后在 HTML 文本区域中显示参数,因此最终需要保留换行符。如果 DB 值包含换行符,则换行符将包含在输出的客户端脚本中,这当然会导致客户端脚本错误。
我尝试通过清理函数传递数据库值以替换换行符:
private string CleanJavaScriptString( string stringToClean )
{
string cleanString = stringToClean.Replace( "'", "\'" );
cleanString = cleanString.Replace( Environment.NewLine, "\n" );
return cleanString;
}
但这仍然会输出代码中的实际换行符。我怎样才能做到这一点?
最佳答案
如果您有权访问它(从 .NET 3.5 开始),最好使用 JavaScriptSerializer
...
Private Sub MesgBox(ByVal sMessage As String)
Dim serializer as New System.Web.Script.Serialization.JavaScriptSerializer()
Dim msgedtble As String = serializer.Serialize(sMessage)
Page.ClientScript.RegisterStartupScript(Me.GetType, "myScripts",
"<script type='text/javascript'>alert(" & msgedtble & ");</script>")
End Sub
这取自 this question/answer .
JavaScriptSerializer 的优点是它会处理引号、换行符 - 以及所有您可能没有想到的字符,这些字符会影响 JavaScript。
编辑
这里有一个 C# 等同于您所要求的......
private string CleanJavaScriptString( string stringToClean )
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new
System.Web.Script.Serialization.JavaScriptSerializer();
return serializer.Serialize(stringToClean);
}
关于c# - 从代码后面输出Javascript时如何处理换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432320/