2010-01-25 70 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身體活動前被解僱。

相關問題