2

我有一个函数,foo我想添加,window.onload但是我的问题是已经有另一个函数bar,设置为 window.onload。我怎样才能获得这两个功能。我无权更改bar添加方式的逻辑,window.onload因此我无法使用范例addEvent(…)。在所有情况下都可以使用以下内容吗?

<script>
$(window).load(foo(){
//my code here
});
</script>

//lots of html
//potentially this happens before or after my above script

<script>
window.onload = bar();
otherFunction(){
//other function code here
};
</script>
4

3 回答 3

5

这不是问题,因为您使用的是 jQuery。您可以$(window).load(...)多次调用,它不会消除以前绑定的事件处理程序。

这个函数接受一个匿名函数作为参数,一旦加载事件被触发就会执行。例如

$(window).load(function() {alert('the window has loaded');});

处理程序的 JQuery 文档.load()https ://api.jquery.com/load-event 。

作为参考,等效的“香草”JS 将使用window.addEventListener.


更新

而不是.load事件,使用.on('load,'

$(window).on('load', function() { alert('This is better'); });

有关更多信息,请参阅https://stackoverflow.com/a/37915907/361842

于 2013-09-04T03:18:13.273 回答
2

无法附加函数,但您可以使用addEventListener然后为load事件注册多个函数:

window.addEventListener("load",a);
window.addEventListener("load",b);
function a(){
  alert("one");
}
function b(){
  alert("two");
}
于 2013-09-04T03:20:43.417 回答
0
<!doctype html>

<html>
  <head>
    <meta http-equiv='content-type' content='text/hmtl; charset=utf-8'/>
    <script type='text/javascript'>
      window.addEventListener("load",foo);
      window.addEventListener("load",bar);
      function foo(){
        alert("this");
      }
      function bar(){
        alert("that");
      }
    </script>

  </head>

  <body>

  </body>
</html>
于 2013-09-04T03:18:38.457 回答