当前位置:  开发笔记 > 编程语言 > 正文

添加多个window.onload事件

如何解决《添加多个window.onload事件》经验,为你挑选了2个好方法。

在我的ASP.NET用户控件中,我正在为window.onload事件添加一些JavaScript :

if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), onloadScriptName))
  Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName, 
    "window.onload = function() {myFunction();};", true);            

我的问题是,如果onload事件中已经存在某些事情,那么这会覆盖它.如何在onload事件中允许两个用户控件执行JavaScript ?

编辑:感谢第三方库的信息.我会记住它们.



1> 小智..:

建议的大多数"解决方案"都是特定于Microsoft的,或者需要膨胀的库.这是一个好方法.这适用于符合W3C标准的浏览器和Microsoft IE.

if (window.addEventListener) // W3C standard
{
  window.addEventListener('load', myFunction, false); // NB **not** 'onload'
} 
else if (window.attachEvent) // Microsoft
{
  window.attachEvent('onload', myFunction);
}



2> Vincent Robe..:

还有一个丑陋的解决方案(远远不如使用框架或addEventListener/ attachEvent)来保存当前onload事件:

function addOnLoad(fn)
{ 
   var old = window.onload;
   window.onload = function()
   {
       old();
       fn();
   };
}

addOnLoad(function()
{
   // your code here
});
addOnLoad(function()
{
   // your code here
});
addOnLoad(function()
{
   // your code here
});

请注意,像jQuery这样的框架将提供一种在DOM准备就绪时执行代码的方法,而不是在页面加载时执行代码.

DOM已准备好意味着您的HTML已加载但不包含外部组件(如图像或样式表),允许您在加载事件触发之前调用很长时间.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有