1

私は JavaScript の新しい学習者です。次のコードは JavaScript 決定版ガイドからのものです。

function addEvent(elem, evtType, func)
{
   if (elem && typeof(elem) == "object")
   {

      if (elem.addEventListener)
      {
         elem.addEventListener(evtType, func, false);
      }

      else
      {
         elem["on" + evtType] = func;
      }
   }
}

なぜ追加するのか

  if (elem.addEventListener)
  {
     elem.addEventListener(evtType, func, false);
  }

しかし、window.onloadすべてのブラウザで問題なく動作します。以下は私のテスト例です。

<script type="text/javascript">
         window.onload=myFuntion();
        function myFuntion(){
            alert("test");
        }
    </script>
</head>

<body>

    <h1> testtste </h1>
</body>

IE ffで問題なく動作します。

4

1 に答える 1

2

直接割り当ては堅牢ではありません。

...とにかく、コードはロード時に関数を実行していません。すぐに実行され、戻り値 ( undefined) がonloadオブジェクトに割り当てられます。

それを修正したら、デモンストレーション:

  <script type="text/javascript">
      window.onload=myFuntion;

      function myFuntion(){
            alert("test");
       }
  </script>
  <script type="text/javascript">
      window.onload=myOtherFunction;

      function myOtherFunction(){
            alert("test2");
       }
  </script>

イベントは上書きされます。起動する関数は 1 つだけです。

…決定的なガイドの例はあまり良くありません。複数のイベントバインディングを可能にする古い独自の API (IE 8 以前のattachEventなど) を試す代わりに、直接割り当てにフォールバックします (これはかなり無意味になります)。

于 2012-05-03T10:03:09.140 に答える