1. 程式人生 > >JS Event 物件——20181116

JS Event 物件——20181116

Event.eventPhase

Event.bubbles屬性返回一個布林值,表示當前事件是否會冒泡。該屬性為只讀屬性,一般用來了解 Event 例項是否可以冒泡。前面說過,除非顯式宣告,Event建構函式生成的事件,預設是不冒泡的。

Event.eventPhase屬性返回一個整數常量,表示事件目前所處的階段。該屬性只讀。

var phase = event.eventPhase;

Event.eventPhase的返回值有四種可能。

  • 0,事件目前沒有發生。
  • 1,事件目前處於捕獲階段,即處於從祖先節點向目標節點的傳播過程中。
  • 2,事件到達目標節點,即Event.target
    屬性指向的那個節點。
  • 3,事件處於冒泡階段,即處於從目標節點向祖先節點的反向傳播過程中。

Event.timeStamp——滑鼠移動

Event.timeStamp屬性返回一個毫秒時間戳,表示事件發生的時間。它是相對於網頁載入成功開始計算的。

var evt = new Event('foo');
evt.timeStamp // 3683.6999999995896

它的返回值有可能是整數,也有可能是小數(高精度時間戳),取決於瀏覽器的設定。

下面是一個計算滑鼠移動速度的例子,顯示每秒移動的畫素數量。

var previousX;
var previousY;
var previousT;

window.addEventListener('mousemove', function(event) {
  if (
    previousX !== undefined &&
    previousY !== undefined &&
    previousT !== undefined
  ) {
    var deltaX = event.screenX - previousX;
    var deltaY = event.screenY - previousY;
    var deltaD = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));

    var deltaT = event.timeStamp - previousT;
    console.log(deltaD / deltaT * 1000);
  }

  previousX = event.screenX;
  previousY = event.screenY;
  previousT = event.timeStamp;
});

————————————————————————————END——————————————————————————