把多个JavaScript函数绑定到onload事件处理函数上的方法


Posted in Javascript onSeptember 04, 2016

为了让函数只在页面加载完毕后才得到执行,我们会把函数绑定到onload事件上:

window.onload = userFunction

但如果有两个函数:firstFunction() 和 secondFunction(),都想让它们在页面加载完毕后得到执行,该怎么办?如果这样:

window.onload = firstFunciton;
window.onload = secondFunction;

只有最后一个函数能被执行。由此可得:每个事件处理函数只能绑定一条指令。

但我们可以这样做:

window.onload = function(){
     firstFunction();
     secondFunction();
   }

这是一个解决办法。

不过,还有一个更通的解决方案——额外编写一些代码,但好好处是,有了这些代码,把函数,不管它们有多少,绑定到window.onload事件上的工作就非常简明易行了。

这个函数的的名字是addLoadEvent,它是由Simon Willison编写的。它只有一个参数:打算在页面加载完毕时执行的函数的名字。

下面是addLoadEvent()函数将要完成的操作:

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

2. 如果在这个处理函数上还没有绑定任何函数,就像平时那样把形函数添加给它。

3. 如果在这个处理函数上已经绑定了一些函数,就把形函数追加到现有指令的末尾。

下面是addLoadEvent()函数的代码清单:

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

这相当于为那些将在页面加载完毕时执行的函数创建了一个队列。如果想把刚才那两个函数添加到队列中去,只需要写出以下代码即可:

addLoadEvent(firstFunction);
addLoadEvent(secondFunction);

以上这篇把多个JavaScript函数绑定到onload事件处理函数上的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery的一些特性和用法整理小结
Jan 13 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
js随机生成网页背景颜色的方法
Feb 26 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
JavaScript表单焦点自动切换代码
Jul 24 Javascript
canvas知识总结
Jan 25 Javascript
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
JS简单测试循环运行时间的方法
Sep 04 #Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 #Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 #Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
Sep 04 #Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 #Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 #Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 #Javascript
You might like
php短域名转换为实际域名函数
2011/01/17 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php实现插入排序
2015/03/29 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
python实现log日志的示例代码
2018/04/28 Python
pandas中去除指定字符的实例
2018/05/18 Python
解决python报错MemoryError的问题
2018/06/26 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
华三通信H3C面试题
2015/05/15 面试题
出纳工作岗位责任制
2014/02/02 职场文书
诚信考试承诺书
2014/03/27 职场文书
大二学生自我检讨书
2014/10/23 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
爱情保证书
2015/01/17 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
教你使用pyinstaller打包Python教程
2021/05/27 Python
Python使用DFA算法过滤内容敏感词
2022/04/22 Python
Nginx 匹配方式
2022/05/15 Servers