繁城落叶 2016-09-20 12:57 采纳率: 100%
浏览 904
已采纳

关于javascript 中的addLoadEvent重复实现函数问题

最近学习javascript的时候看的Javascript DOM编程艺术,中间作者提到了addLoadEvent()
函数,用来在页面加载完成后调用函数。
但发现有个函数会调用两次,求解答。
html文件代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Hello</title>
    </head>
    <body>
        <script src="../script/addLoadEvent.js"></script>
        <script src="../script/new_file.js"></script>
        <script src="../script/new_file1.js"></script>
    </body>
</html>

js代码:

addLoadEvent.js

 function addLoadEvent(func) {
    var oldonload = window.onload;
    if(typeof window.onload != 'function') {
        window.onload = func;
    } else {
        oldonload();
        func();
    }
}

new_file.js代码:

 function fun1() {
    alert("fun1");
}


addLoadEvent(fun1);

new_file1.js代码:

 function fun2() {
    alert("fun2");
}

addLoadEvent(fun2);

运行时,会出现两次fun1 一直不懂,求大神解答

  • 写回答

3条回答 默认 最新

  • 全栈极简 博客专家认证 2016-09-20 13:25
    关注

    function addLoadEvent(func) {
    var oldonload = window.onload;
    if(typeof window.onload != 'function') {
    window.onload = func;
    } else {
    window.onload = function() {
    oldonload();
    func();//如果已经绑定了函数,就把新函数追加到现有指令的末尾
    }
    }
    }

    注意else部分是window.onload.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况