function pageLoad(sender,eventArgs) { }
和
window.onload = function() { }
解决方法
Sys.Application
的“客户端运行时对象”。它处理在页面的[clientside]寿命期间提升初始化,加载和卸载事件,如下所示:
> Sys.Application.initialize()
开始生命周期的初始部分。这个initialize()的所有客户端AJAX控件,之后他们准备与程序交互@H_301_9@> Sys.Application开始负载生命周期的一部分,调用已订阅此事件的所有处理程序@H_301_9@>最后,它调用全局函数pageLoad(如果定义了一个)
对于每个部分(即AJAX UpdatePanel)回发,重复步骤2)和3)。
所以最后的答案:pageLoad只是一个方便的快捷方式Sys.Application.add_load()
。
关于它与window.onload的关系,但事情开始变得有趣。基本上,MS需要window.onload才能在init阶段完成之后才能启动。但您无法控制浏览器何时触发onload,因为它与“内容加载”有关。这被称为“the window.onload
problem”:
onload event fires after all page@H_301_9@ content has loaded (including images@H_301_9@ and other binary content). If your@H_301_9@ page includes lots of images then you@H_301_9@ may see a noticeable lag before the@H_301_9@ page becomes active.
所以他们只是发明了自己的“特殊”功能,在他们的事件生命周期的正确时间开火,并将其称为“pageLoad”。而他们用来启动这个自定义事件生命周期的技巧是place the call to Sys.Application.initialize()
just before the closing </form>
tag.服务器端运行时这样做。精明的读者会注意到,这个技巧允许MS解决window.onload问题,因为你放入pageLoad的任何代码将独立于二进制内容(w/ one rare catch for IE)。
>他们的行为是一样的吗?
在概念上是的,实际上根本不是因为说window.onload的问题。唯一的规则是,您应该只在pageLoad中放置与AJAX控件进行交互的代码,因为window.onload遵循自己的事件轨迹。
>还是一个叫另一个?
他们完全是100%独立。
如果你定义它们,它们将被调用。