[研究]ASP.NET + JavaScript Alert 彈出對話盒視窗換行測試 vs 彈出對話盒視窗沒出現研究
2022-03-18
2022-03-19更新
嚴格來說,
\r (CR, Carriage Return)是回車,游標回到開頭,ASCII 碼 13 = \x0d,UniCode 碼 U+000D
\n (LF, Line Feed)是換行,游標到下一行,沒有回到開頭,ASCII 碼 10 = \x0a,UniCode 碼 U+000A
但在不同的場合,可能只使用其中一種就兼具回到開頭和換行。https://zh.wikipedia.org/wiki/%E6%8F%9B%E8%A1%8C
- LF:在Unix或Unix相容系統(GNU/Linux,AIX,Xenix,Mac OS X,...)、BeOS、Amiga、RISC OS
- CR+LF:DOS(MS-DOS、PC-DOS等)、微軟視窗作業系統(Microsoft Windows)、大部分非Unix的系統
- CR:Apple II家族,Mac OS至版本9
Test.htm
<html>
<head>
<script language='javascript' defer>alert('換行測試1\n換行測試');</script>
<script language='javascript' defer>alert('換行測試2\r換行測試');</script>
<script language='javascript' defer>alert('換行測試3\\n換行測試');</script>
<script language='javascript' defer>alert('換行測試4\\r換行測試');</script>
<script language='javascript' defer>alert('換行測試5\n\r換行測試');</script>
<script language='javascript' defer>alert('換行測試6\r\n換行測試');</script>
</head>
</html> |
結果如下 ( 有些測試使用雙倒斜線,這是為了測試脫序字元,做個比較)
單獨的 \r 和 \n 意義相同,但 \n\r 和 \r\n 意義不同。
兩個 \\ 會當成真正要顯示 \ 使用,而非有特殊用途。
********************************************************************************
Visual Studio 2022 + ASP.NET + WebForm + Web Application
WebForm1.aspx
using System;
using System.Web.UI;
namespace WebApplication16
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試1<br />換行測試');</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試2\\n換行測試');</script>");
}
protected void Button3_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試3\\r換行測試');</script>");
}
protected void Button4_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試4\n換行測試');</script>");
}
protected void Button5_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試5\r換行測試');</script>");
}
protected void Button6_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試6\u000d換行測試');</script>");
}
protected void Button7_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試7\u000a換行測試');</script>");
}
protected void Button8_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試8\\u000d換行測試');</script>");
}
protected void Button9_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('換行測試9\\u000a換行測試');</script>");
}
}
} |
結果如下 ( 有些測試使用雙倒斜線,這是為了測試脫序字元,做個比較)
可以發現 ASP.NET 用 Page.ClientScript.RegisterStartupScript 來使用 JavaScript Alert 視窗時,必須使用兩個倒斜線才可以讓對話盒視窗顯示和換行,否則連彈出視窗都沒了。
********************************************************************************
2022-03-19
Test2.htm
<html>
<head>
<script language='javascript' defer>alert('換行測試11
換行測試');</script>
</head>
</html> |
結果不會有彈出視窗,表示alert的訊息不可以自己手動先換行。
********************************************************************************
結論
*alert的訊息不可以自己手動先換行,不會有彈出視窗。<br \> 只會被當成文字顯示。
*alert中單獨的 \r 和 \n 意義相同,但 \n\r 和 \r\n 意義不同。兩個 \\ 會當成真正要顯示 \ 使用,結果不會有彈出視窗。
*ASP.NET的Page.ClientScript.RegisterStartupScript,必須使用兩個倒斜線才可以讓對話盒視窗顯示和換行,否則連彈出視窗都沒了。
(完)
相關
[研究][ASP.NET]JavaScript alert對話盒視窗彈出位置測試
https://shaurong.blogspot.com/2022/04/aspnetjavascript-alert.html
[研究]ASP.NET + JavaScript Alert 彈出視窗換行測試 vs 彈出視窗沒出現研究
https://shaurong.blogspot.com/2022/03/javascript-alert.html
[研究]HTML, CSS, JavaScript, jQuery, jQuery UI, Bootstrap 彈出對話盒視窗
https://shaurong.blogspot.com/2020/11/html-css-javascript-jquery-jquery-ui.html
[研究]]JavaScript] 用 orangehill / bootstrap-session-timeout 做 Session Time Out 前 N 秒自動彈出對話盒視窗
https://shaurong.blogspot.com/2020/11/javascript-orangehill-bootstrap-session.html
[研究][JavaScript] 用 session-timeout.js 做 Session Time Out 前 N 秒自動彈出對話盒視窗
https://shaurong.blogspot.com/2020/11/javascript-session-timeoutjs-session.html
[研究][JavaScript]Master Page 用 idle-timer.js 做 Session Time Out 前 N 秒自動彈出倒數計時對話盒視窗
https://shaurong.blogspot.com/2020/11/javascriptcaspnetwebform-master-page.html
[研究][JavaScript] 用 idle-timer.js 做 Session Time Out 前 N 秒自動彈出倒數計時對話盒視窗
https://shaurong.blogspot.com/2020/11/javascript-idle-timerjs-session-time.html
[研究][JavaScript] 用 timeout-dialog.js 做 Session Time Out 前 60 秒自動彈出倒數計時對話盒視窗
https://shaurong.blogspot.com/2020/11/javascript-timeout-dialogjs-session.html
[研究][C#] [ASP.NET] [JavaScript] 彈出視窗 (對話盒)
https://shaurong.blogspot.com/2020/04/c-aspnet-javascript.html
[研究][C#] [ASP.NET] [JavaScript] 彈出視窗
https://shaurong.blogspot.com/2017/06/c-aspnet-javascript.html