ASP.NET AJAX 客户端生命周期事件 1

翻译:Valens
  时间:2007-06-11
  原文:http://ajax.asp.net/docs/overview/AJAXClientEvents.aspx
  
  欢迎大家提出意见,我会积极进行修改的!
  
  Introduction【介绍】
  
  微软Ajax提出了与ASP.NET 2.0页面服务器端生命周期事件相似的客户端生命周期事件。这些客户端事件使得我们能为传统回送和异步回送(部分页面刷新)都能定制自己的用户界面。它们还可以在整个页面生命周期期间帮助你管理和使用自定义的脚本。
  
  这些客户端事件在微软的AJAX Libray的类中都被提出来了(我们可以在AJAX Libray的类中找到它们)。当加载一个带有AJAX服务器控件时,这些类都会自动地实例化(instantiated?)。这些类提供了一些APIs 以便我们能够将事件绑定到事件提供处理程序。并且AJAX Library是独立于浏览器的,所以你写的代码可以工作在所有支持的浏览器。
  
  关键的事件是初始化请求和异步回送的应用程序实例的 load 事件。当脚本在加载处理事件运行时,所有的脚本和组件都已经被加载并且是可用的。当使用了 UpdatePanel 控件部分页面刷新时,所有客户端事件中最关键的就是 PageRequestManager 类。这些客户端事件使得你能够实现某些场景。比如包括了:撤销回送,为一个回送设置更高的优先级,还可以使 UpdatePanel 在刷新的时候交互得更好。
  
  这些事件对于我们创建页面或写组件都有很大的帮助。如果你是一个网页开发人员,你可以为页面在加载和卸载时使用定制的脚本。
  
  向了解更多服务器端生命周期事件,可以参考 ASP.NET Page Life Cycle Overview.
  
  Client Classes【客户端类】
  
  在微软AJAX类库中提出了在AJAX网页的客户端生命周期中两个很主要的类: Application 类和 PageRequestManager 类。
  
  当浏览器请求一个有包含有 ScriptManager 控件的页面时,Application 类就实例化了。Application 类和服务器端的 Page 控件类似,也是继承自 Control 类,不过却额外附加了一些功能(相比服务端事件)。类似的, Application 继承了 Sys.COmponent 类,除此,还提供了很多在客户端生命周期期间内的可操作事件。
  
  如果一个页面包含了一个 ScriptManager,并且还存在了一个或更多的 UpdatePanel 控件,那么这个页面就可以实现部分更新的效果了。如果是那样的话,一个 PageRequestManager 类的实例对浏览器是可用的了。PageRequestManager 提供的客户端事件都是关于异步回送的。更多关于生成部分页面的细节请参考:Partial-Page Rendering Overview.
  
  Adding Handlers for Client
  Events【为客户端事件增加Handler】
  
  现在通过使用 Application 和 PageRequestManager 类中的 add_eventname 和 reomve_eventname 方法来添加或移除事件。下面这个例子展示了如何添加一个操作(handler)名为 MyLoad 到 Application 对象的 init 事件。
  
  Sys.Application.add_init(MyInit);
  function MyInit(sender) {
  }
  Sys.Appplication.remove_init(MyInit);
  
  注释;这个例子只是展示了使用 add_eventname 和 remove_eventname 方法的语法。更多关于使用这个事件的细节将在后面的主题提供。
  
  Handling the Application Load and Unload Events【操作Application的加载和卸载事件】
  
  要操作 Application 对象的 load 和 unload 事件,不需要显示地绑定到一个操作事件。相反地,你可以直接使用保留关键字 pageLoad 和 pageUnload 来创建一个函数。下面这个例子展示了如何为 Application 的 load 事件添加一个操作。
  
  function pageLoad(sender, args) {
  }
  
  
  Events for Other Client Classes【其它客户端类】
  
  这个主题仅仅描述由 Application 和 PageRequestManager 类提供的事件。微软的AJAX类库还包括了以下的类用于 DOM 元素事件的添加、清除和移除。这些类包括了:
  
  有 Sys.UI.DomEvent.addHandler 方法或简短写法 $addHandler.
  
  有 Sys.UI.DomEvent.clearHandlers 方法或简短写法 $clearHandlers.
  
  有 Sys.UI.DomEvent.removeHandler 方法或简短写法 $removeHandler.
  
  有关 DOM 原理提供的事件不是本主题讨论的。
  
  Client Events of the Application and PageRequestManager Classes【Application和PageRequestManager类的客户端事件】
  
  下面的表格列出了你可以在 AJAX 的 ASP.NET 页面使用的 Application 和 PageRequestManager 类的客户端事件。事件发生的顺序将在稍后的主题中进行讨论。
  
  Event
  (事件名称)
   Description
  (描述)
  
  init Event
  [初始化事件]
   在所有脚本被加载后,在任何一个对象被创建之前引发该事件。如果你打算写一个组件(脚本),init 事件提供了一个在生命周期内添加组件(脚本)到页面的点。该组件可以被其它在生命周期内的脚本调用。如果你是一个网页开发人员,在大多数的情况之下,建议用 load 事件来替代 init 事件来处理。
  
  init 事件只在页面开始生成时创建一次。后来的部分页面刷新将不会引发 init 事件。
  
  load Event
  [加载事件]
   该事件在所有脚本被加载后,并且由使用 $create 初始化的所有程序对象被创建后引发。该事件将被所有回送到服务器引发,这些回送也包括异步的回送。
  
  如果你是网页开发人员,你可以创建一个名为 pageLoad 的函数,该函数是由加载事件本身提供的。该 pageLoad 操作(handler)是在任何一个通过 add_load 方法被添加到 load 事件的操作后可以调用。
  
  load 事件需要一个 Sys.ApplicationLoadEventArgs 对象作为 eventargs 参数。你可以通过该参数来决定页面是否需要显示部分刷新,还可以决定哪些组件应当在上一个引发 load 事件后被创建。
  
  unload Event
  [卸载事件]
   在所有对象被释放之前,在浏览器的 window.unload 事件发生之前被引发。
  
  你可以通过系统自身提供的一个名为 pageUnload 的函数来处理卸载事件。pageUnload 事件是在页面在浏览器中卸载时调用。在该事件发生期间,我们应当释放由代码占用的全部资源。
  
  propertyChanged Event
  [属性改变事件]
   当某组件的属性发生改变时引发。应用程序对象是从 Component 类那里继承了这个事件。该事件仅在开发人员在设置一个属性值的时候调用了 Sys.Component.raisePropertyChange 方法而引发的。
  
  更多信息请查看 Defining Custom Component Properties and Raising PropertyChanged Events.
  属性改变事件需要一个 Sys.applicationLoadEventArgs 对象作为 eventargs 参数。
  
  disposing Event
  [释放事件]
   该事件是在应用程序实例被释放时引发的。应用程序对象从 Component 类继承了该事件。
  
  initializeRequest Event
  [初始化请求事件]
   该事件发生在一个异步请求开始时。你可以通过使用该事件来取消一个传统的回送,例如让一个异步回送获得优先。
  
  初始化请求事件需要一个 Sys.WebForms.InitializeRequestEventArgs 对象提供的 eventargs 参数。该对象提供了那些引起回送和暗藏的(underlying)请求的对象的有用的元素。该事件还暴露了 cancel 属性。如果你设置 cancel 值为 true,一个新的回送将被撤销。
  
  beginRequest Event
  [开始请求事件]
   该事件是在一个回送到服务器的异步回送开始前引发。如果当前已经存在了一个回送进程,则会被停止(by using the abortPostBack method)。你可以使用该事件来设置请求的头部或显示一个有趣的(animation)提示在页面中,表示该请求正在进行中。
  
  该事件需要一个 Sys.WebForms.BeginRequestEventArgs 对象作为 eventargs 参数。该对象提供了引起回送的和暗藏的(underlying)请求对象的有用的元素。
  
  pageLoading Event
  [页面正在加载事件]

相关文章

随机推荐:

相关链接

helloajax.com
专注Ajax、Asp.Net、JavaScript技术