看你的mouseover事件是做些什么的

解决方案 »

  1.   

    如果body内容不多的话,影响不大,性能还要看客户端的机器配置如何,来个I7cpu,2G显卡,4G内存,页面在复杂也小case,最好还是不要放在body。
    这样事件一直在触发!
      

  2.   

    浏览器中的事件采取冒泡机制,若控件触发了某个事件,而当前控件未定义相应的事件处理函数,
    该事件就会继续向上提交,直至 document,若始终未处理该事件那么该事件会被丢弃。IE 下可以通过 event.cancelBubble[=bCancel] 关闭事件冒泡机制。下例中点击文本框时会提示 “body click” 就是这个道理!
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
     </head> <body>
    <input type="text" id="a" value="123" />
      <script type="text/javascript">
      <!--
    document.body.onclick = function() {
    alert("body click");
    };
      //-->
      </script>
     </body>
    </html>
      

  3.   

    想法同楼上,不管你有没有去观察这个事件,浏览器同样需要处理它,所以这个层面上对性能的影响基本可以忽略。
    但是对body上的onmouseover事件得到执行的频率会相对更高,所以如果你的函数里做的事情太复杂对性能没有好处。
    另外就是冒泡的问题上面也提到了,造成的结果就是即使你的鼠标一直没有离开页面,onmouseover也会不断被执行,因为在各个元素上的mouseover和mouseout都会冒泡到最上层来触发事件