<input onclick=".." />
我的意思是,bubbling phase
或capture phase
?
答案 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在身体事件之前被触发。