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

 更新时间:2020年07月03日 11:58:20   作者:奔跑的太阳花  
这篇文章主要介绍了原生javascript如何实现共享onload事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在工作时,我们给一个元素绑定了事件,如果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);

我发现这个函数非常实用,尤其是在代码变得越来越复杂的时候。无论打算在页面加载完毕时执行多少个函数,只要定一条语句就可以安排好一切。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 前端图形开发canvas绘制入门教程

    前端图形开发canvas绘制入门教程

    Canvas是HTML5新增元素,用于绘制图形、动画等视觉效果,简单添加Canvas元素和JavaScript即可绘制图形和文本,包括线条、矩形、圆形等,Canvas优势在于高性能和兼容性,适用于复杂交互效果,需要的朋友可以参考下
    2024-11-11
  • 详解JavaScript什么情况下不建议使用箭头函数

    详解JavaScript什么情况下不建议使用箭头函数

    箭头函数作为ES6新增的语法,在使用时不仅能使得代码更加简洁,而且在某些场景避免this指向问题。但是箭头函数不是万能的,也有自己的缺点以及不适用的场景,本文总结了JavaScript什么情况下不建议使用箭头函数,感兴趣的可以了解一下
    2022-06-06
  • JS正则验证邮箱的格式详细介绍

    JS正则验证邮箱的格式详细介绍

    这篇文章主要介绍了JS正则验证邮箱的格式。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • jquery插件锦集【推荐】

    jquery插件锦集【推荐】

    本文主要分享了jquery插件: 时钟效果; 倒计时; 全选效果; tab点击切换; tab鼠标移动切换; 文本输入搜索等。具有很好的参考价值需要的朋友一起来看下吧
    2016-12-12
  • 在JavaScript中终止forEach循环的三种方式

    在JavaScript中终止forEach循环的三种方式

    如何终止forEach循环这个问题估计会难倒一部分同学,甚至会有人反问,forEach循环在JavaScript中能终止吗?本文小编给大家介绍了三种方式可以终止forEach循环,需要的朋友可以参考下
    2023-11-11
  • 微信小程序支付功能 php后台对接完整代码分享

    微信小程序支付功能 php后台对接完整代码分享

    这篇文章主要为大家详细介绍了微信小程序支付功能,分享了php后台对接完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • innerHTML,outerHTML,innerText,outerText的用法及区别解析

    innerHTML,outerHTML,innerText,outerText的用法及区别解析

    本篇主要是对innerHTML,outerHTML,innerText,outerText的用法及区别进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • javascript中 try catch用法

    javascript中 try catch用法

    JS try catch语句一般在什么情况下使用?是必须使用的吗?下面就让小编来给大家介绍一下试用心得。
    2015-08-08
  • JS 设置Cookie 有效期 检测cookie

    JS 设置Cookie 有效期 检测cookie

    这篇文章主要介绍了JS 设置Cookie 有效期 检测cookie的相关资料,需要的朋友可以参考下
    2017-06-06
  • JS实现微博发布功能

    JS实现微博发布功能

    这篇文章主要为大家详细介绍了JS实现微博发布功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论