<!DOCTYPE html>
<title>drag &amp; drop - event sequence for cross-document drag</title>
<style type="text/css">
  /* use margins instead of padding to make sure the body begins at the top of the page */
  html, body {
    margin: 0;
    padding: 0;
    height: 100%;
  }
  #testhere div {
    height: 100px;
    width: 100px;
    position: absolute;
    top: 8px;
  }
  body::before {
    height: 100px;
    width: 100px;
    position: absolute;
    top: 8px;
    left: 0px;
    content: "";
    background-color: silver;
  }
  #yellow {
    background-color: yellow;
    left: 150px;
  }
  #blue {
    background-color: navy;
    left: 300px;
  }
</style>

<script>
window.onload = function () {
  var yellow = document.querySelector('#yellow')
  var blue = document.querySelector('#blue')
  var body = document.body;

  /* Events for the fuchsia box */
  yellow.ondragstart = function () { parent.events.push('doc2.yellow.ondragstart'); };
  yellow.ondrag = function () { parent.events.push('doc2.yellow.ondrag'); };
  yellow.ondragenter = function () { parent.events.push('doc2.yellow.ondragenter'); return false; };
  yellow.ondragover = function () { parent.events.push('doc2.yellow.ondragover'); return false; };
  yellow.ondrop = function () { parent.events.push('doc2.yellow.ondrop'); return false; };
  yellow.ondragend = function () { parent.events.push('doc2.yellow.ondragend'); };
  yellow.onmousedown = function () { parent.events.push('doc2.yellow.onmousedown'); };
  yellow.onmouseup = function () { parent.events.push('doc2.yellow.onmouseup'); };

  /* Events for the blue box (droppable) */
  blue.ondragstart = function () { parent.events.push('doc2.blue.ondragstart'); };
  blue.ondrag = function () { parent.events.push('doc2.blue.ondrag'); };
  blue.ondragenter = function () { parent.events.push('doc2.blue.ondragenter'); return false; };
  blue.ondragover = function () { parent.events.push('doc2.blue.ondragover'); return false; };
  blue.ondrop = function () { parent.events.push('doc2.blue.ondrop'); return false; };
  blue.ondragend = function () { parent.events.push('doc2.blue.ondragend'); };
  blue.onmousedown = function () { parent.events.push('doc2.blue.onmousedown'); };
  blue.onmouseup = function () { parent.events.push('doc2.blue.onmouseup'); };

  /* Events for the page body */
  body.ondragstart = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondragstart': 'doc2.bubble.ondragstart' ); };
  body.ondrag = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondrag': 'doc2.bubble.ondrag' ); };
  body.ondragenter = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondragenter': 'doc2.bubble.ondragenter' ); };
  body.ondragover = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondragover': 'doc2.bubble.ondragover' ); };
  body.ondrop = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondrop': 'doc2.bubble.ondrop' ); };
  body.ondragend = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.ondragend': 'doc2.bubble.ondragend' ); };
  body.onmousedown = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.onmousedown': 'doc2.bubble.onmousedown' ); };
  body.onmouseup = function (e) { parent.events.push( ( e.target == body ) ? 'doc2.body.onmouseup': 'doc2.bubble.onmouseup' ); };

};
</script>

<div id="testhere">
<div id='yellow'></div>
<div id='blue'></div>
</div>
