【问题标题】:line break in alert popup警报弹出窗口中的换行符
【发布时间】:2012-09-26 14:12:57
【问题描述】:

我正在尝试添加新行 Javascript 警报消息。我尝试了“\n”和“Environment.NewLine”。我收到未终止的字符串常量错误。你能告诉我可能是什么问题吗?我很感激任何帮助。我也试过\r\n。

string msg = "Your session will expire in 10 minutes. \n Please save your work to avoid this.";


if (!this.ClientScript.IsStartupScriptRegistered(ID)) 
   this.ClientScript.RegisterStartupScript(GetType(), ID, String.Format("<script language=JavaScript>setTimeout(\'alert(\"{1}\");\',{0}*1000);</script>", sTime, msg));

【问题讨论】:

  • 我知道我在下面发布了在“string msg”前面添加一个@,但在进一步审查后,您可能应该在此处添加它:String.Format(@"

标签: c# javascript asp.net


【解决方案1】:

我怀疑您需要将代码更改为;

string msg = "Your session will expire in 10 minutes. \\n Please save your work to avoid this.";

并转义\n,否则您输出的代码实际上会包含换行符而不是\n

您的输出代码如下所示:

setTimeout('alert("Your Session....
 Please save your work to ....");', 1000);

而不是:

setTimeout('alert("Your Session....\n Please save your work to ....");', 1000);

【讨论】:

    【解决方案2】:

    我不确定,但我认为 \n 在 string.Format 方法中被转义,如 \"。也许你应该改用 \\n。

    已编辑:当我发布该内容时,\\n 的第一个 \ 已被转义。 xD

    【讨论】:

      【解决方案3】:

      乍一看,我会说主要问题是您正在逃避警报周围的' 字符。由于您的字符串由双引号定义,因此您无需转义此字符。

      【讨论】:

      • 我尝试删除警报周围的 ' 字符。但我也有同样的问题。
      • @nav100:你没有删除这个角色,你只是没有逃避它。 "&lt;script language=JavaScript&gt;setTimeout('alert(\"{1}\"); ...
      • 感谢您的所有回答。我有同样的问题
      【解决方案4】:

      在字符串的开头添加“@” - 像这样:

      string msg = @"Your session ....";
      

      【讨论】:

        【解决方案5】:

        代码看起来不错,所以我猜测您使用的消息本身包含 ' 引号,导致 JS 语法错误。要将动态文本插入到 Javascript 代码块中,您确实应该使用 JSON 来使您的 C# 字符串“安全”以在 JS 中使用。

        将 JSON 视为防止 JS 等效的 SQL 注入攻击的首选方法。

        【讨论】:

          【解决方案6】:

          在开头添加@ 应该会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-15
            • 1970-01-01
            相关资源
            最近更新 更多