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>

事件被覆盖。只有一个函数会触发。

…虽然权威指南中的例子不是很好。它退回到直接分配(这使得它变得毫无意义),而不是尝试允许多个事件绑定的旧专有 API(例如,用于 IE 8 及更低版本的attachEvent )。

于 2012-05-03T10:03:09.140 回答