在单独的文件中使用多个window.onload事件

时间:2014-03-05 09:43:53

标签: javascript events event-handling onload addeventlistener

我遇到了问题,无法弄明白,如果有人帮助我,我会很高兴。所以基本上我要做的是将多个window.onload事件放在一个单独的文件中,该文件启动我的脚本。为了弄明白我的意思,她就是我的情况:

假设我收到了这些文件:

的index.html

    <html>
    <head>
        <link rel="stylesheet" href="style.css" type="text/css">
        <script type="text/javascript" src="kalkevent.js"></script>
        <script type="text/javascript" src="reckevent.js"></script>
        <script type="text/javascript" src="winonload.js"></script>
    </head>
    <body>
        <div id="topColumn">
            ...
        </div>
        <div id="bottomColumn">
            ...
        </div>
    </body>
    </html>

kalk.js

    function kalkInit() {

    Array.prototype.slice.call(document.forms[0].elements).forEach(function(element) {
        ...
    });
    };

reck.js

    function reckInit() {
    ...
    };

所以我想在window.onload上加载kalkInit和reckInit。这应该在一个单独的文件中处理。我已经尝试过的是:

winonload.js

  function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    };
  }
  };
  addLoadEvent(kalkInit);
  addLoadEvent(reckInit);

但它根本不起作用。所以我的问题是,如果有可能我想做什么或不做。如果可以,有人会帮助我吗? :)

2 个答案:

答案 0 :(得分:1)

您可以考虑使用jQuery .. 在你的winonload.js中你只需要:

$(window).on("load", kalkInit);
$(window).on("load", reckInit);

答案 1 :(得分:0)

也许你必须打电话给你的onloadfunction:

 <body onload="addLoadEvent();">