为了账号安全,请及时绑定邮箱和手机立即绑定

addLoadEvent函数优势在哪?

addLoadEvent函数优势在哪?

江户川乱折腾 2019-02-20 15:17:16
javascript DOM编程艺术window.onload = function(){       firstFunction();       secondFunction();   }为什么说当函数多的时候 用上述匿名函数包含的方式就不妥了?通过这种方法确实是可以解决load事件多次调用的问题,但是这种方法仍然存在一些局限。例如:如果一个页面中存在多个javascript文件,在这多个javascript文件中可能每一个javascript文件都会用到window.load()方法,在这种情况下使用这种方法是无法解决的,同时也无法保证按照顺序执行多个注册的函数。http://blog.csdn.net/chenssy/...仅仅是这个原因么?
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

如果页面一个js里面有多个window.onload=匿名方法,那么实际上只有最后一个会被执行

如果window.onload 不是特别多,用一个匿名方法包裹需要调用的方法,这样也是可以的,即以下形式:


window.onload = function(){  

    firstFunction();  

    secondFunction();  

但如果有多个js,都有 window.load,更进一步,可以用一个专门的 addEventLoad 函数,专门来绑定 onload 事件


function addLoadEvent(func) {

    //把现有的 window.onload 事件处理函数的值存入变量

    var oldOnload = window.onload;

    if (typeof window.onload != "function") {

      //如果这个处理函数还没有绑定任何函数,就像平时那样添加新函数

      window.onload = func;

    } else {

      //如果处理函数已经绑定了一些函数,就把新函数添加到末尾

      window.onload = function() {

        oldOnload();

        func();

      }

    }

  }

这样,只需要确保 addLoadEvent 方法事先被声明,之后引入的js文件里的onload方法都可以改成:

addLoadEvent(functionA)


这样就能确保,在window.load事件触发的时候按照js文件 加载顺序 和 同一js文件里addLoadEvent 的顺序,逐一调用方法


查看完整回答
反对 回复 2019-02-22
  • 2 回答
  • 0 关注
  • 574 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号