javascript onload多个函数支持多个页面onload事件的方法

发布时间:2020-06-30编辑:脚本学堂
本文介绍下,在javascript脚本中,使用onload多个函数,支持多个页面onload事件的方法,有需要的朋友参考下。

通过javascript来操作页面的元素,但这需要浏览器读取到这段JS代码时页面元素已经存在了,对于将JS代码放在head区而操作body里面的元素时则不行。

这种情况,可以用onload事件来解决这个问题。

onlaod事件告诉浏览器等页面加载完成了再执行。
语法:
 

复制代码 代码示例:
window.onload = fn;
function fn()
{
//函数主体
}
 

这样等页面全部加载完了才会调用fn这个函数。
 
页面复杂时onload可能不只一个函数,这时可以将这多个函数放在一个主体函数里。
 

复制代码 代码示例:
window.onload = fn;
function fn()
{
fn1();//第一个函数
fn2();//第二个函数
...
}
 

页面更复杂时,在<head>里调用了两个JS文件(其中一个可能是外部的,不被控制),这两个JS文件都用到了onload,发现第一个onload会被第二个onload覆盖,不会执行。
而且由于分布在两个页面,所以不能将他整合到一个函数中,需要用到addEventListener-“添加事件监听”方法了。
语法:
window.addEventListener('load',fn1,false);
window.addEventListener('load',fn2,false);
这两段代码分别放在一个JS文件里。
  
这个函数IE不兼容,对应IE的函数是attachEvent。
对应IE的语法:
window.attachEvent('onload',fn1);
window.attachEvent('onload',fn2);
这两段代码分别放在一个JS文件里。
 
可以写一个函数,来兼容不同的浏览器。

代码:
 

复制代码 代码示例:
function addLoadListener(fn)
{
 if (typeof window.addEventListener != 'undefined')
{
  window.addEventListener('load',fn,false);
}
 else if (typeof document.addEventListener != 'undefined')
{
  document.addEventListener('load',fn,false);
}
 else if (typeof window.attachEvent != 'undefined')
{
  window.attachEvent('onload',fn);
}
 else
{
   var oldfn = window.onload;
   if (typeof window.onload != 'function')
  {
 window.onload = fn;
  }
  else
  {
 window.onload = function() {
 lodfn();
 fn();
 };
   }
 }
}
 

然后,可以通过调用该函数来实现需要的功能:
addLoadListener(fn1);
addLoadListener(fn2);
说明,这两段代码分别放在一个JS文件中。