原生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 相关文章推荐
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
JS建造者模式基本用法实例分析
Jun 30 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
SpringMVC简单整合Angular2的示例
Jul 31 Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python中threading超线程用法实例分析
2015/05/16 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
十八届三中全会感言
2014/03/10 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书