代码之家  ›  专栏  ›  技术社区  ›  George

为什么我不能以相同的方式将函数()绑定到onload事件和resize事件?

  •  0
  • George  · 技术社区  · 6 年前

    为什么我不能以相同的方式将函数()绑定到onload事件和resize事件?

    这是一个.JS文件中的测试代码。
    我通过使用两种不同的方法将函数绑定到事件来实现它。 而且效果很好。

    window.addEventListener('resize', function() {
      alert (“Hi from resize”);
    }
    
    window.onload = function () {
      alert (“Hi from onload”);
    }
    

    然而,当我试图用同样的方法来绑定它们时,一个总是失败的。也就是说,这两项工作都不是:

    window.resize = function () {
      alert (“Hi from resize”);
    }
    
    window.addEventListener('onload', function() {
      alert (“Hi from onload”);
    }
    

    我发现关于如何使具体的例子以这种或那种方式工作的帖子层出不穷。

    有人能帮我弄明白吗:

    ---有人写道addEventListener()是首选。而这一直接任务并非如此。是真的吗?

    ---addEventListener()是否应该同时适用于这两者?

    ---我是不是错过了一些我应该知道的东西?

    我的意思是我的代码很好用。只是前后不一致,这似乎总是表明我搞砸了。

    非常感谢。

    2 回复  |  直到 6 年前
        1
  •  4
  •   Barmar    6 年前

    on<eventname> ;当您使用 addEventListener() <eventname> . 所以应该是:

    window.onresize = function() {
        alert("Hi from resize");
    };
    
    window.addEventListener("load", function() {
        alert("Hi from resize");
    });
    

    addEventListener 因为以下几个原因,现在人们更喜欢它:

    1. 您可以有多个侦听器,这些侦听器都在事件发生时执行。指定给特性时,它将替换以前的值。如果要删除事件侦听器,可以使用 removeEventListener 选择性地(这需要绑定到命名函数,因为在删除时需要传递相同的函数)。

    2. onXXX

        2
  •  1
  •   kristoffer petersen    6 年前

    addEventListener 是首选的,因为如果分配,则将覆盖已分配给该事件的任何其他事件。

    使用时的onload事件 附加侦听器 只是“加载”