在ASP.NET中向页面发送JavaScript脚本

    最近从WinForm转到Web了,好多东西要适应和学习啊~~~在学校搞的那些WEB的东西都忘的差不多了
    这次是调用JavaScript,除了单独的写在JS文件中的,也有需要在CS代码里用的。比如现在的页面有个TextBox,我在CS代码中赋值是有的,但是页面上就是不显示(页面很复杂,从一个基类继承过来的,控件的事件和数据绑定都是动态添加的),跟踪调试一直到了父类,算了,还是用JS方便的多。嘿,你还别说,简单、方便,牙好胃口就好!
    以下为几种方式,摘自http://www.cnblogs.com/seyon/archive/2007/11/05/949960.html


Page.Response.Write("<script>var response;</script>");    

Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");    

Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");   

Response.Write输出后的位置在源文件的第一行.

RegisterClientScriptBlock输出后的位置会在<form>的下一行.(在asp.net自带的脚本和一些隐藏域之下).

RegisterStartupScript输出后的位置会在</form>的上一行.

RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置.RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或Response.Write。

RegisterClientScriptBlock一般返回的是客户端函数的包装,而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload="f()"里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock在<form runat=server>之后,而RegisterStartupScript在</form>之前。

补充例子:
....
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="Form1" method="post" action="WebForm6.aspx" id="Form1">
           <input type="hidden" name="__VIEWSTATE" value="dDw3MzU1MTQ5MzY7Oz6nugrEg+5T6RC7MTIuLoIrMLQLPw==" />
<script>function block(){}</script>    ------------>RegisterClientScriptBlock()方法输出的在这里


<input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 120px" />

            <script>function startup(){}</script> ------------>RegisterStartupScript()方法输出的在这里

</form>
</body>
</HTML>




    我用的是RegisterStartupScript,因为需要在页面控件全部加载完毕后才可以,所以当然要出现在最后的</form>前面了
当然,这只是输出脚本到页面,想要修改页面上控件的值,还得DOM出马:
document.getElementById(控件ID).setAttribute(控件的某个属性,如值的话可以为'value',值)

很好,DOM很好,很强大,而且是Ajax必用的利器。Ajax,我也跑不了的……

 


 


    我们程序员就是螺丝钉,公司哪里需要就往哪里插,啦啦啦,啦啦啦
    C#、JAVA、PHP、C++,学一个用一个,用一个忘一个,忘一个扔一个,啦啦啦,啦啦啦

posted on 2008-05-28 15:20  阳光下的柚子  阅读(613)  评论(0)    收藏  举报

导航