ASP.Net動態產生Client端JavaScript

Designed by Freepik
ASP.Net裡如何動態的產生Client端的JavaScript 一直沒有搞清楚,
查詢之後才發現原來有不同的地方。
 看了MSDN,有看不太懂,所以直接做一下吧! 
圖片來源Designed by Freepik 

首先我們在Load事件加入以下四行指令。
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "test1", "function a(){alert('這是RegisterClientScriptBlock指令');}", true);

Page.ClientScript.RegisterStartupScript(this.GetType(), "test2", "function b(){alert('這是RegisterStartupScript指令');}", true);

Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "test3", Page.ResolveUrl("../script/PZ.helpful.js"));

Response.Write("<script>alert('Response.Write指令')</script>");

產生的結果如下。
Response.Write("<script>alert('Response.Write指令')</script>");
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
....
....(省略)
....
<body>
 <form action="./XXXXXX.aspx" id="form1" method="post" name="form1">

  <script type="text/javascript">
  //<![CDATA[
  function a(){alert('這是RegisterClientScriptBlock指令');}//]]>
  </script>


  這是RegisterClientScriptInclude指令
  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  <script src="../script/PZ.helpful.js" type="text/javascript"></script>
  ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

  <div>
   網頁本文
  </div>

  <script type="text/javascript">
  //<![CDATA[
  function Hello2(){alert('這是RegisterStartupScript指令');}//]]>
  </script>


 </form>
</body>

這樣就一目了然了。
至於有什麼差別?
來看看網友(Boei's DreamFactory)的結論

1.Response.Write在整個的page的最上面,這個還是少用。

2.RegisterClientScriptBlock產生的地方在<form  runat="server"> 的下面,這個會比RegisterStartupScript更早發生,所以要放全域變數的可以用這個。

3.RegisterStartupScript產生的地方在</form> 的上面,方便在client端取值,因為全部的control render後,它才會發生。

4.一開始只是註冊script,所以不會因為你放的順序而產生相同的順序,是到最後才會render到html,所以要看html最後呈現的結果而定。
而我的結論。。。 要學要記的東西真的好多!!!

沒有留言:

張貼留言

技術提供:Blogger.