原生javascript如何实现共享onload事件


Posted in Javascript onJuly 03, 2020

在工作时,我们给一个元素绑定了事件,如果dom还没加载完成,就执行了js代码,就不会绑定成功。常规解决方案就是用:

window.onload = EventFunction;

可是如果有两个 事件,

  • window.onload = EventFunction1;
  • window.onload = EventFunction2;

那2就会将1取代,这时你可能会想:每个事件处理板书只能绑定一条指令。有一种办法可以让我们避开这一难题:可以先创建一个匿名函数来容纳这两个函数,然后把那个匿名函数绑定到onload事件上,如下所示:

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

它确实能很好地工作————在需要绑定的函数不是很多的场合,这应该是最简单的解决方案了。

这里还有一个弹性最佳的解决方案——不管你打算页面加载完毕时执行多少个函数,它都可以应付自如。这个方案需要额外编写一些代码,把函数绑定到window.onload事件就非常易行了。

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

下面是此函数要完成的操作:

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

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

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

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 相关文章推荐
JS 文件大小判断的实现代码
Apr 07 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
js使用cookie记录用户名的方法
Nov 26 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
详解Angular.js的$q.defer()服务异步处理
Nov 06 Javascript
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
vuex提交state&&实时监听state数据的改变方法
Sep 16 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 Javascript
JS实现按比例缩小图片宽高
Aug 24 Javascript
Vue如何实现监听组件原生事件
Jul 03 #Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 #Javascript
JavaScrip如果基于url实现图片下载
Jul 03 #Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 #Javascript
JavaScript如何判断对象有某属性
Jul 03 #Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 #Javascript
JS常见错误(Error)及处理方案详解
Jul 02 #Javascript
You might like
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
发布你的Python模块详解
2016/09/15 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python之pandas用法大全
2018/03/13 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python numpy 反转 reverse示例
2019/12/04 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
大一自我鉴定范文
2013/10/04 职场文书
教师求职推荐信范文
2013/11/20 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
装修五一活动策划案
2014/01/23 职场文书
个性与发展自我评价
2014/02/11 职场文书
青春励志演讲稿
2014/04/29 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
清明节主题班会
2015/08/14 职场文书
员工工作心得体会
2019/05/07 职场文书
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python