ASP.Net動態產生Client端JavaScript
查詢之後才發現原來有不同的地方。
看了MSDN,有看不太懂,所以直接做一下吧!
首先我們在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最後呈現的結果而定。
沒有留言:
張貼留言