Amr*_*rhy 17 .net javascript asp.net asp.net-ajax
我正在使用ASP.NET AJAX,并希望了解这两个片段之间的区别:
function pageLoad(sender, eventArgs) { }
Run Code Online (Sandbox Code Playgroud)
和
window.onload = function() { }
Run Code Online (Sandbox Code Playgroud)
Cre*_*esh 41
首先要注意的几件事情.MS发明了一种称为"客户端运行时对象" Sys.Application.它处理提升init,load和unload整个页面的[客户方]寿命事件,如下所示:
Sys.Application.initialize()开始init生命周期的一部分.这initialize()是所有客户端AJAX控件,之后他们准备以编程方式进行交互Sys.Application开始load生命周期的一部分,调用已订阅此事件的所有处理程序pageLoad(如果定义了一个)对于每个部分(即AJAX + UpdatePanel)回发,重复步骤2)和3).
所以最后答案pageLoad是:只是一个方便的捷径Sys.Application.add_load().
window.onload然而,关于它的关系,事情开始变得有趣.从本质上讲,MS需要window.onload火只后的init阶段已经完成.但你无法控制浏览器何时触发onload,因为它与"内容加载"相关联.这被称为" window.onload问题":
加载所有页面内容(包括图像和其他二进制内容)后,onload事件将触发.如果您的页面包含大量图像,那么在页面变为活动状态之前您可能会看到明显的延迟.
因此,他们刚刚发明了自己的"特殊"功能,可以在事件生命周期的恰当时间点亮并调用它"pageLoad".他们用来启动这个自定义事件生命周期的技巧是将调用Sys.Application.initialize()放在结束</form>标记之前.serverside运行时执行此操作.精明的读者会注意到这个技巧允许MS解决window.onload问题,因为你输入的任何代码都pageLoad将独立于二进制内容(具有IE的一个罕见捕获).
>他们的行为是一样的吗?
从概念上讲,是的,实际上根本没有window.onload问题.唯一的规则是你应该只放置与你的AJAX控件交互的代码pageLoad,因为window.onload它遵循自己的事件轨迹.
>或者是在另一个之前打电话?
它们完全是100%独立的.
>或者会自动调用一个而另一个不会调用吗?
如果你定义了它们,它们都会被调用.
| 归档时间: |
|
| 查看次数: |
14350 次 |
| 最近记录: |