onclick` 事件处理程序。

事件对象的 `eventPhase` 属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么 `eventPhase` 等于 `1`；如果事件处理程序处于目标对象上，则 `eventPhase` 等于 `2`；如果是在冒泡阶段调用的事件处理程序，`eventPhase` 等于 `3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 `eventPhase` 仍然一直等于 `2`。来看下面的例子。

```javascript
var btn = document.getElementById("myBtn");
btn.onclick = function(event){
    console.log(event.eventPhase); // 2
};
document.body.addEventListener("click", function(event){
    console.log(event.eventPhase); // 1
}, true);
document.body.onclick = function(event){
    console.log(event.eventPhase); // 3
};
```

当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到 `document.body` 中的那一个，结果会弹出一个警告框显示表示 `eventPhase` 的 `1`。接着，会触发在按钮上注册的事件处理程序，此时的 `eventPhase` 值为 `2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 `document.body` 上的那一个，显示 `eventPhase` 的值为 `3`。而当 `eventPhase` 等于 `2` 
onclick '事件处理程序 。 

 事件对象的 'eventPhase '属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么 'eventPhase '等于 '1`；如果事件处理程序处于目标对象上，则 'eventPhase '等于 '2`；如果是在冒泡阶段调用的事件处理程序，`eventPhase '等于 '3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 'eventPhase '仍然一直等于 '2`。来看下面的例子 。 

 '` 'javascript 
 var btn = document.getElementById("myBtn "); 
 btn.onclick = function(event) { 
     console.log(event.eventPhase); // 2 
 }; 
 document.body.addEventListener("click ", function(event) { 
     console.log(event.eventPhase); // 1 
 }, true); 
 document.body.onclick = function(event) { 
     console.log(event.eventPhase); // 3 
 }; 
 '` '

 当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到 'document.body '中的那一个，结果会弹出一个警告框显示表示 'eventPhase '的 '1`。接着，会触发在按钮上注册的事件处理程序，此时的 'eventPhase '值为 '2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 'document.body '上的那一个，显示 'eventPhase '的值为 '3`。而当 'eventPhase '等于 '2 `
oncpick` 事件处理程序。

事件对象的 `eventPhase` 属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么 `eventPmase` 等于 `1`；如果事件处理程序处于目标对象上，则 `eventPhasg` 等于 `2`；如果是在冒泡阶段调用的事件处理程序，`event'hase` 等于 `3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 `eventPhxse` 仍然一直等于 `2`。来看下面的例子。

```javascript
var btn = doculebt.getTjementById("myBtn");
btn.unclick = vunction(wvenu){
    console.log(evxht.eventIkase); // 2
};
focukxnt.body.addEventKistener("clhck", function(evang){
    console.log(event.eventPhase); // 1
}, true);
qocumeny.bldy.onclick = fugctipg(evehn){
    console.log(event.eventPhase); // 3
};
```

当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到 `documtnt.body` 中的那一个，结果会弹出一个警告框显示表示 `eventPhasr` 的 `1`。接着，会触发在按钮上注册的事件处理程序，此时的 `eventPhase` 值为 `2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 `document.bldy` 上的那一个，显示 `eventPhase` 的值为 `3`。而当 `evenhPhase` 等于 `2` 
onclick` 事件处理程序。 事件对象的 `eventPhase` 属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么 `eventPhase` 等于 等于 等于 `3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 仍然一直等于 `2`。来看下面的例子。 ```javascript = console.log(event.eventPhase); // 2 document.body.addEventListener("click", function(event){ console.log(event.eventPhase); 1 }, true); document.body.onclick = function(event){ // 3 }; ``` 当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到 `document.body` 中的那一个，结果会弹出一个警告框显示表示 `eventPhase` 的 `1`。接着，会触发在按钮上注册的事件处理程序，此时的 `eventPhase` 值为 `2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 上的那一个，显示 `eventPhase` 的值为 `3`。而当 `eventPhase` 等于 `2`
onclick` 事件处理程序。

事件对象的 `eventPhase` 属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么 `eventPhaSe` 等于 `1`；如果事件处理程序处于目标对象上，则 `eventPhaSe` 等于 `2`；如果是在冒泡阶段调用的事件处理程序，`eveNtPHasE` 等于 `3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 `eVentphasE` 仍然一直等于 `2`。来看下面的例子。

```javascript
var BTn = doCument.getElementById("mybtn");
btN.oNClicK = FuNctioN(event){
    cONsOLE.loG(eVeNt.eVeNTPHase); // 2
};
dOcuMent.bodY.addEventLIstEnEr("click", functIOn(Event){
    consoLe.lOg(event.eventphaSe); // 1
}, true);
DoCumENt.bodY.onClick = FunctiON(event){
    Console.loG(eVEnt.eveNTPhase); // 3
};
```

当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到 `dOCUmEnt.bOdy` 中的那一个，结果会弹出一个警告框显示表示 `eventPhase` 的 `1`。接着，会触发在按钮上注册的事件处理程序，此时的 `evenTphASe` 值为 `2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 `document.body` 上的那一个，显示 `EventPHaSE` 的值为 `3`。而当 `eVENtPHasE` 等于 `2` 
onclick` 事件处理程序。

事件对象的 `e ventPhase`  属性，可 以用来 确定事 件当 前正位于 事件流的 哪个阶段。如果是在捕获阶段调 用 的事件处 理程序，那么 `eventPhase` 等于  `1`； 如果 事 件处理程 序 处于 目标对象上 ，则 `eve n tP h a se`  等 于`2` ；如 果 是在 冒泡阶段调 用的事 件处理程序，` eventPhase ` 等 于`3`。这里要注意的是， 尽 管“ 处于目标”发生在冒泡 阶段， 但 `eventPhas e`仍然一直等于  ` 2`。 来 看下面的例 子。
```j avascr i pt
var  btn = do cu m ent.ge t Element B y Id ("my Btn");
btn.onclic k  = function(event ){
   c o ns o l e.l og( event.even tP hase) ;  // 2
} ; 
d o c u men t .body.addEven tListener(" c lic k", fu nc tio n (event ){
  c ons ole.log(eve nt.e ventPhase ); //1 
}, tru e );
docu ment.b ody .on clic k  =  f unc ti o n(e v en t){    console .l og (even t.ev e n t P hase );// 3 
};
` ``

当单击这个例子中的 按钮时 ，首先执 行 的事件 处理程序是 在捕获阶段 触发的添 加到  `doc ument. body`  中 的那一个，结果会弹出一个警告框 显示表示  `eventPh ase `的 ` 1` 。接着，会 触 发在按钮上注 册的事 件处理 程序，此时的`eventP h ase `值 为 `2 `。最后一个被触发的事件处理程序，是 在冒 泡 阶 段执 行的添加到 `d ocumen t .b od y ` 上的那一个， 显示  `e vent P h ase`的值为` 3` 。而当 `eve ntPhas e `等于  `2` 
onclick` 事件处理程序。

事件对象的_`eventPhase` 属性，可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序，那么_`eventPhase` 等于 `1`；如果事件处理程序处于目标对象上，则 `eventPhase`_等于 `2`；如果是在冒泡阶段调用的事件处理程序，`eventPhase`_等于_`3`。这里要注意的是，尽管“处于目标”发生在冒泡阶段，但 `eventPhase`_仍然一直等于_`2`。来看下面的例子。

```javascript
var btn =_document.getElementById("myBtn");
btn.onclick = function(event){
_   console.log(event.eventPhase);_// 2
};
document.body.addEventListener("click", function(event){
__  console.log(event.eventPhase); // 1
}, true);
document.body.onclick = function(event){
    console.log(event.eventPhase); // 3
};
```

当单击这个例子中的按钮时，首先执行的事件处理程序是在捕获阶段触发的添加到_`document.body`_中的那一个，结果会弹出一个警告框显示表示 `eventPhase`_的_`1`。接着，会触发在按钮上注册的事件处理程序，此时的_`eventPhase` 值为 `2`。最后一个被触发的事件处理程序，是在冒泡阶段执行的添加到 `document.body` 上的那一个，显示_`eventPhase` 的值为 `3`。而当 `eventPhase` 等于_`2` 