[ASP.NET][JavaScrip][CSS](quote)Response.Write()印出JavaScript alert導致部分CSS失效

摘要:[ASP.NET]Response.Write()印出JavaScript alert導致部分CSS失效

發生原因:

ASP.NET 預設採用「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」定義

該定義要求在「<!DOCTYPE ... >」的前面不可以以任何的輸出

不過當我們在程式碼中使用 Response.Write() 方法來做輸出時,就會發生違反定義的情況

這時候就會發生 CSS 異常的情形。

解決方法:別使用 Response.Write 來輸出 JavaScript alert 語法

 

以下列出幾種替代方案:

方法一(使用 Literal 元件):

在頁面裡面拉一個 Literal 元件,並且在需要印出 JavaScript alert 的時候下

Literal.Text = "<script language=\'javascript\'>alert(\'" + “msg” + "\')</script>";

其中 msg 是你要顯示的訊息

或是

Literal AlertMsg = new Literal();

AlertMsg.Text = "<script language=\'javascript\'>alert(\'" + “msg” + "\')</script>";

this.Page.Controls.Add(AlertMsg);

 

方法二(註冊 Client 的 Head Script):

Page.RegisterClientScriptBlock("AlertMsg", "<script language=\'javascript\'>alert(\'" + msg + "\')</script>");

或是

ClientScript.RegisterClientScriptBlock(this.GetType(), "AlertMsg", "<script language=\'javascript\'>alert(\'" + msg + "\')</script>");


方法三: 寫成「方法」來呼叫


public void MessageBox(string strKey, string strInfo)

{

  if (!ClientScript.IsClientScriptBlockRegistered(strKey))

     {

    string strjs = "alert('" + strInfo + "');";

    ClientScript.RegisterClientScriptBlock(this.GetType(), strKey, strjs, true);

      }

    }

然後在想要的事件中直接呼叫即可:

MessageBox("opsuccess","恭喜,密码修改成功,请记住新密码!");

 

FM: http://www.cnblogs.com/pengpengsay/archive/2008/01/10/1032934.html

 

 
--
強烈建議購物網店或實體店家都必須使用關鍵字廣告or原生廣告來將Yahoo上與聯播網的廣大流量導至自己的網站!

●Yahoo關鍵字廣告/原生廣告
◆Yahoo廣告方案介紹 : https://goo.gl/5k8FHW
◆Yahoo廣告剖析與運用 : http://goo.gl/4xjUJD

 

​​