Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>PointerEvent fromElement/toElement</title>
  <style>
    .box {
      margin: 0px;
      padding: 20px;
      border: 1px solid green;
    }
  </style>
</head>
<body id="body" onload="init()">
  <h1>PointerEvent fromElement/toElement</h1>
  <div id="parent" class="box">
    <div id="child1" class="box"></div>
    <div id="child2" class="box"></div>
  </div>
</body>
<script>
  var cachedFromElement = "";
  var cachedToElement   = "";
  function label(elem) {
    return elem ? elem.id : null;
  }
  function eventHandler(e) {
    if (e.eventPhase !== 2)
      return;
    
    let fromElement = label(e.fromElement); 
    let toElement   = label(e.toElement); 
    if (e.type.startsWith("mouse")) {
      cachedFromElement = fromElement;
      cachedToElement   = toElement;
      return;
    }
    
    let msg = e.type + "@" + e.target.id;
    msg += " fromElem=" + fromElement + (fromElement !== cachedFromElement ? "*" : "");
    msg += " toElem="   + toElement   + (toElement   !== cachedToElement   ? "*" : "");
    
    console.log(msg);
    cachedFromElement = "";
    cachedToElement   = "";
  }
  function init() {
    let eventPrefixes = ["mouse", "pointer"];
    let eventTypes = ["down", "up", "move", "enter", "leave", "over", "out"];
  
    eventPrefixes.forEach(prefix => {
      eventTypes.forEach(type => {
        document.getElementById("parent").addEventListener(
          prefix+type, eventHandler);
      });
    });
  }
</script>
</html>
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
mustaqpro
0viewers