增加多个window.onload事件
P粉555696738
P粉555696738 2023-08-22 18:09:32
0
2
461
<p>在我的ASP.NET用户控件中,我正在向<code>window.onload</code>事件添加一些JavaScript代码:</p> <pre class="brush:php;toolbar:false;">if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), onloadScriptName)) Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName, "window.onload = function() {myFunction();};", true);</pre> <p>我的问题是,如果<code>onload</code>事件中已经有内容,那么这段代码会覆盖它。我该如何让两个用户控件都能在<code>onload</code>事件中执行JavaScript代码?</p> <p><strong>编辑:</strong>谢谢关于第三方库的信息。我会记住的。</p>
P粉555696738
P粉555696738

全部回复(2)
P粉354602955

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

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

addOnLoad(function()
{
   // 在这里编写你的代码
});
addOnLoad(function()
{
   // 在这里编写你的代码
});
addOnLoad(function()
{
   // 在这里编写你的代码
});

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

DOM准备就绪意味着你的HTML已经加载完成,但是外部组件(如图片或样式表)尚未加载完成,这使得你可以在加载事件触发之前被调用。

P粉253518620

大部分提出的“解决方案”都是针对Microsoft的,或者需要庞大的库。这是一个好的方法。它适用于符合W3C标准的浏览器和Microsoft IE。

if (window.addEventListener) // W3C标准
{
  window.addEventListener('load', myFunction, false); // 注意 **不是** 'onload'
} 
else if (window.attachEvent) // Microsoft
{
  window.attachEvent('onload', myFunction);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板