2010-01-25 49 views

回答

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> 
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身体活动前被解雇。

相关问题