如何清理异常字符串以便通过Javascript Alert显示

How to clean up an exception string so it can be displayed via Javascript Alert?

本文关键字:Javascript Alert 显示 何清理 异常 字符串      更新时间:2023-09-26

我正试图以一种由来已久的方式显示一个异常字符串:-

Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
    page.ClientScript.RegisterClientScriptBlock(
                  typeof(Alert),
                  "alert",
                  "<script type='"text/javascript'">alert('"Fred'");</script>");
}

这样做非常好,并按预期显示消息。然而,如果我使用程序的其他部分提供的字符串:-

    page.ClientScript.RegisterClientScriptBlock(
       typeof(Alert),
       "alert",
       "<script type='"text/javascript'">alert('"" + error_message + "'");</script>");

没有显示弹出窗口并且出现错误,

Unterminated String Constant

该字符串包含数量少得可怜的控制字符,但据我所见,没有任何"'字符。有没有一个函数可以被调用来清理字符串,以便它可以被Javascript Alert显示?这里的这个人也有类似的问题,但没有得到普遍的解决方案。

在显示消息之前,您需要序列化消息,因为它可能包含破坏JS的字符。您可以使用JavaScriptSerializer类

例如:

var errorMsg = new JavaScriptSerializer().Serialize(error_message);
page.ClientScript.RegisterClientScriptBlock(
   typeof(Alert),
   "alert",
   "<script type='"text/javascript'">alert('"" + errorMsg + "'");</script>");