2

foo追加したい関数がありますが、window.onload に設定されたwindow.onload別の関数 が既に存在するという問題があります。bar両方の機能を接続するにはどうすればよいですか。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(...)、以前にバインドされたイベント ハンドラーを踏みにじることはありません。

この関数は、無名関数をパラメーターとして取り、load イベントが発生すると実行されます。例えば

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

.load()ハンドラーの JQuery ドキュメント: 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 に答える