一切随风

......---谁还记得那曾经的胡同
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

从服务器端向客户端注册script脚本的几种方法

Posted on 2005-01-19 18:36  随风  阅读(806)  评论(2)    收藏  举报

前段时间在开发一个web工程,经常会使用到从后台向页面写jsp脚本的情况,根据使用方式和实现要求的不同 我将他们总结为以下几点,不足之处还请大家补充指出,不吝赐教。

一、直接写页面
方法:
 直接使用Response.Write方法向页面抛出
使用范围:
一般只有alert()等无需调用页面信息和控件的可使用此方法;
如:Response.Write("<script>alert('haha,ok');</script>");
原因:
根据调试跟踪发现Response.Write()方法在页面load时是最先被加载到页面的, 即页面的第一句就是<script>alert('haha,ok');</script>; 因此jsp语句中如果包含页面控件会无法找到相应对象,此方法适用的范围较小。

二、向页面提交注册脚本
方法一:
page.RegisterClientScriptBlock(key,value);
使用范围:
可以直接执行alert()等无需调用页面信息和控件的方法;也可以执行页面中的不含页面信息和控件的脚本函数;
如:page.RegisterClientScriptBlock("aa","<script>alert('haha,ok');</script>;");
又如:<script language="javascript">
function writealert()
{ alert('alert-这是要显示的值!'); } </script>
page.RegisterClientScriptBlock("aa","writealert()");
原因: 
使用此方法注册到客户端的脚本在 Page 对象的 <form runat= server> 元素的开始标记后发出。 此时页面的控件都还未加载,因此jsp语句中如果包含页面控件会无法找到相应对象。
 方法二:
page.RegisterStartupScript(key,value);
使用范围:
可以注册几乎大部分脚本方法;
原因:
该方法在 Page 对象的 <form runat= server> 元素的结束标记之前发出脚本,在</form>时基本上大部分的页面控件都已加载完成,因此不会遇到之前几种方法遇到的问题。
 
三、使用特殊控件

Copyright © 随风