js window.onload 加载多个函数和追加函数详解

 本篇文章主要是对js window.onload 加载多个函数和追加函数进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

平时做项目 经常需要使用window.onload,
 
用法如下:
 
function func(){alert("this is window onload event!");return;} 
 
window.onload=func;
 
或者如下: 
 
window.onload=function(){alert("this is window onload event!");return;}
 
但window.onload 不能同时加载多个函数。
 
比如:
 
function t(){
alert("t")
}
function b(){
alert("b")
}
window.onload =t ;
window.onload =b ;
 
后面会把前面的覆盖,上面代码只会输出 b。 
 
此时可用如下方法解决:
window.onload =function() { t();  b(); }
 
另一种解决方法如下:
 
代码如下:
 function addLoadEvent(func) {
  var oldonload = window.onload;//得到上一个onload事件的函数
  if (typeof window.onload != 'function') {//判断类型是否为'function',注意typeof返回的是字符串
    window.onload = func;
  } else {  
    window.onload = function() {
      oldonload();//调用之前覆盖的onload事件的函数---->由于我对js了解不多,这里我暂时理解为通过覆盖onload事件的函数来实现加载多个函数
      func();//调用当前事件函数
    }
  }
}
 
//(完整示例)使用如下:
 
function t(){
alert("t")
}
function b(){
alert("b")
}
function c(){
alert("c")
}
 function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {  
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
 
addLoadEvent(t);
addLoadEvent(b);
addLoadEvent(c);
//等价于  window.onload =function() { t();  b(); c() ;}
 
 
个人以为直接使用隐式函数(如:window.onload =function() { t();  b(); c() ;})更快捷,当然使用 addLoadEvent 更professional,各取所好吧!
 
JS window.onload追加函数:
 
 代码如下:
<script>
if(window.attachEvent)//IE:如果浏览器中存在window.attachEvent函数则使用window.attachEvent函数,判断是否是IE还可以使用:if (document.all){//..}
window.attachEvent("onload",function() {alert("add method");});
else  //FireFox
window.addEventListener("load",function() {alert("add method");},true);
</script>
 
运行,js中alert弹出消息,问题解决。
 
============相关资料================
 
attachEvent   将指定函数绑定到事件,以便每当该事件在对象上触发时都调用该函数。
 
Internet Explorer 从 5.0 开始提供了一个 attachEvent 方法,使用这个方法,就可以给一个事件指派多个处理过程了。attachEvent 对于目前的 Opera 也适用。但是 Mozilla/Firefox 并不支持这个方法。但是它支持另一个 addEventListener 方法,这个方法跟 attachEvent 差不多,也是用来给一个事件指派多个处理过程的。但是它们指派的事件有些区别,在 attachEvent 方法中,事件是以 “on” 开头的,而在 addEventListener 中,事件没有开头的 “on”,另外 addEventListener 还有第三个参数,一般这个参数指定为 false 就可以了。
 

时间: 2024-10-14 18:13:04

js window.onload 加载多个函数和追加函数详解的相关文章

js window.onload 加载多个函数和追加函数详解_javascript技巧

平时做项目 经常需要使用window.onload, 用法如下: function func(){alert("this is window onload event!");return;} window.onload=func; 或者如下: window.onload=function(){alert("this is window onload event!");return;} 但window.onload 不能同时加载多个函数. 比如: function t

js window.onload 加载多个函数的方法_javascript技巧

用法如下: function func(){alert("this is window onload event!");return;} window.onload=func; 或者如下: window.onload=function(){alert("this is window onload event!");return;} 但window.onload 不能同时加载多个函数. 比如: 复制代码 代码如下: function t(){ alert("

window.onload 加载完毕的问题及解决方案(上)_javascript技巧

解决方法, 一.Mozilla 提供了一个非公开的(undocumented)函数: 复制代码 代码如下: // for Mozilla browsers if (document.addEventListener) { document.addEventListener("DOMContentLoaded", init, false); } 二.对于 IE 浏览器,可以使用IE特有的 defer 属性: 复制代码 代码如下: <script defer type="t

window.onload 加载完毕的问题及解决方案(下)_javascript技巧

接上篇,其它方法: 一.在IE中还可以在onreadystatechange事件里进行判断 http://www.thefutureoftheweb.com/blog/adddomloadevent 这里有Jesse Skinner写了一段独立的脚本函数来解决各种浏览器的onload问题,. http://img.jb51.net/jslib/adddomloadevent.js 复制代码 代码如下: /* * (c)2006 Jesse Skinner/Dean Edwards/Matthia

Android异步加载数据和图片的保存思路详解_Android

把从网络获取的图片数据保存在SD卡上, 先把权限都加上 网络权限 android.permission.INTERNET SD卡读写权限 android.permission.MOUNT_UNMOUNT_FILESYSTEMS android.permission.WRITE_EXTERNAL_STORAGE 总体布局 写界面,使用ListView,创建条目的布局文件,水平摆放的ImageView TextView 在activity中获取到ListView对象,调用setAdapter()方法

同时使用n个window onload加载实例介绍_javascript技巧

复制代码 代码如下: /* 1.obj相当于window 2.type相当于onload 3.fn相当于匿名函数 */ function addEvent( obj,type,fn ){ var saved = null; // 用户保存上一个事件 if( typeof obj[ "on" + type ] == "function" ){ saved = obj[ "on" + type ]; // 用户保存上一个事件 }; // 执行事件  

js的动态加载、缓存、更新以及复用(四)

本来想一气呵成,把加载的过程都写了,但是卡着呢,所以只好在分成两份了. 1.页面里使用<script>来加载 boot.js . 2.然后在boot.js里面动态加载 bootLoad.js.以时间作为标识 var dateVer = date.getYear() + "_" + date.getMonth() + "_" + date.getDate() + "_" + date.getHours(); 这样可以保证一小时内肯定会被

js的动态加载、缓存、更新以及复用

本来想一气呵成,把加载的过程都写了,但是卡着呢,所以只好在分成两份了. 1.页面里使用<script>来加载 boot.js . 2.然后在boot.js里面动态加载 bootLoad.js.以时间作为标识 var dateVer = date.getYear() + "_" + date.getMonth() + "_" + date.getDate() + "_" + date.getHours(); 这样可以保证一小时内肯定会被

多种js图片预加载实现方式分享_javascript技巧

图片预加载有大体有几种方式  1.html标签或css加载图片 显而易见我们使用img标签或者通过标签的background-image属性都可以实现图片的预加载.但是为了避免初次载入过多图片影响体验.一般最好在文档渲染完成以后再加载(使用window.onload等).  2.纯js实现预加载 空城计-Code记的Javascript实现图片的预加载的完整实现的预加载实例为 function preloadimages(arr){ var newimages=[], loadedimages=