ASP.NET服务器端向客户端注册JS代码的方法总结
一、用Response.Write方法
这种方法会把JS代码写在页面的最顶部(<html>的前面)
代码如下:
Response.Write("<script type='text/javascript'>alert("XXX");</script>");
此方法缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定 义,比如
Response.Write("<script type='text/javascript'>function myfun(){}</script>");
提示:以上的脚本在注册后都会立即执行。
二、用ClientScript类
代码如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
MyFun也可以写在.aspx页面中,从.aspx.cs文件中向客户端注册并立即执行该函数。
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");
这种方法会把JS代码嵌入在页面的底部、表单的最后 (</form>前面),RegisterStartupScript适用于要在页面控件加载完成后运行的JS代码 :
或者
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", MyFun();",true);//true就是添加脚本标记<script></script>
这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。
提示:以上的脚本在注册后都会立即执行。
使用RegisterClientScriptBlock,这种方法会把JS代码嵌入在页面的顶部、表单的最前 (<form>后面),适用于要在控件加载前执行的JS代码,类似于上面的Response.Write方式。
三、普通的添加控件的Attributes属性
对于普通按钮就是:Button1.Attributes.Add("onclick","MyFun();");
只能在Onload中或类似于onload的初始化过程中添加才有效。而且是先执行脚本函数,无法改变执行顺序。
注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在脚本里面
提示:以上的脚本按钮点击后执行。
四、如果要在页面加载的时候执行js代码,可以在前台放一个钩子,然后用后台代码往里面写js代码。如:
后台:
init.InnerHtml = "<script type=\"text/javascript\">alert('yes');</script>";
前台:
<div id="init" style="display:none" runat=server>在后台写js代码,做为执行js代码的钩子</div>
注意:以上的脚本在注册后都会立即执行。