• 原生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);

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

  • 相关阅读:
    An introduction to parsing text in Haskell with Parsec
    Kafka and ZooKeeper
    Kotlin + Anko for Android
    LibGDX
    OpenCV
    大中型网站技术实践系列
    Go by Example
    Benchmarks for the Top Server-Side Swift Frameworks vs. Node.js
    The Languages and Frameworks You Should Learn in 2017
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/lguow/p/11101674.html
Copyright © 2020-2023  润新知