0
<html>
<head>
<title>Javascript Event Phases</title>
</head>
<body>
<form id="frm" onclick="frmClick()" >
<input type="button" id="btn" value="Button" onclick="btnClick(event)" />
</form>
</body>
</html>
<script>
document.onclick = function()
{
    window.alert("Document clicked!");
};
function btnClick(e)
{
    if (window.event) {
        window.event.cancelBubble = true;
    }
    else {
        e.stopPropagation();
    }
    window.alert("Button clicked!");
}
function frmClick()
{
    window.alert("Form clicked!");
}</script>

以上代码来自:http ://triaslama.wordpress.com/2008/07/03/javascript-event-phases-capturing-and-bubbling/

问题:

  1. if (window.event) {},这条线只适用于IE吗?为什么我们可以用这条线来检测IE?

  2. e.stopPropagation();这条线是否适用于除 IE 之外的其他浏览器(firefox、safari ...)?

4

1 回答 1

0

演示:http: //jsfiddle.net/abc123/JD7Wu/

这使用 event.preventDefault(),其中 https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

HTML:

<form id="frm" onclick="frmClick()" >
    <input type="button" id="btn" value="Button" onclick="btnClick(event)" />
</form>

JS:

document.onclick = function()
{
    window.alert("Document clicked!");
};
function btnClick(e)
{
    e.preventDefault();
    window.alert("Button clicked!");
}
function frmClick()
{
    window.alert("Form clicked!");
}
于 2013-06-26T02:21:43.733 回答