zoukankan      html  css  js  c++  java
  • 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 就可以了。

    最后感谢vForm表单验证程序的作者-雷晓宝

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenlei65368/archive/2009/09/12/4544823.aspx

  • 相关阅读:
    VUE入门
    搭建内网穿透服务
    nacos集群配置安装
    jenkins入门
    Linux系统管理与自动化运维
    SVN
    JAR包启动
    服务器rm -rf 恢复案例 好文章
    docker入门到放弃
    CentOS7安装图形界面及报错处理
  • 原文地址:https://www.cnblogs.com/archermeng/p/7537584.html
Copyright © 2011-2022 走看看