何时在javascript中触发内联事件?

时间:2010-01-25 03:45:40

标签: javascript html javascript-events

<input onclick=".." />

我的意思是,bubbling phasecapture phase

3 个答案:

答案 0 :(得分:6)

鼓泡阶段。 您可以浏览此链接 http://www.quirksmode.org/js/events_order.html

答案 1 :(得分:4)

在支持W3C DOM的浏览器中,以这种方式注册的事件发生在冒泡阶段。也就是说,内部元素的事件在外部元素的事件之前触发。 (对于大多数现代浏览器而言应该如此......在较旧的Netscape浏览器中,情况恰恰相反。)

您可以非常轻松地在给定的浏览器中测试它。例如,尝试加载此测试页:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en"> 
<head>
  <title>Event order test page</title>
</head>
  <body>
    <div onclick="alert('outer')">
      <div onclick="alert('inner')">
        *************
      </div>
    </div>
  </body>
</html>

答案 2 :(得分:0)

关于Javascript的好处是你可以轻松地尝试:

<html>
  <head>
    <title>Fooscript</title>
    <script type="text/javascript" language="javascript">
      function log(text)
      {
        document.getElementById('logger').innerHTML += text + "<br />";
      }
    </script>
  </head>
  <body onmousedown="log('body_down');" onmouseup="log('body_up');" onmouseclick="log('body_click');">
    <form action="test.php" method="get">
      <input type="button" name="foo" value="foo" onmousedown="log('foo_down'); return false;"  onmouseclick="log('foo_click'); return false;"  onmouseup="log('foo_up'); return false;"/>
    </form>
    <div id="logger">
    </div>
  </body>
</html>

这导致foo在身体事件之前被触发。