tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

029.html (2334B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <title>Drag and drop without cancelling dragenter</title>
      5    <style type="text/css">
      6 div:first-child {
      7  height: 100px;
      8  width: 100px;
      9  background: orange;
     10  display: inline-block;
     11 }
     12 div:first-child + div {
     13  height: 100px;
     14  width: 100px;
     15  background: blue;
     16  display: inline-block;
     17 }
     18    </style>
     19    <script type="text/javascript">
     20 
     21 window.onload = function () {
     22  var drag = document.getElementsByTagName('div')[0], sequence = [];
     23  drag.ondragstart = function (e) {
     24    e.dataTransfer.setData('text','hello');
     25    e.dataTransfer.effectAllowed = 'copy';
     26  };
     27  drag.ondragenter = drag.ondragover = function (e) {
     28    e.preventDefault();
     29  };
     30  var drop = document.getElementsByTagName('div')[1], dragoverhasfired = false;
     31  drop.ondragenter = function (e) {
     32    dragoverhasfired = true; //events targeting body will be ignored until this event has fired
     33    sequence[sequence.length] = 'drop.dragenter';
     34  };
     35  drop.ondragover = function (e) {
     36    e.preventDefault();
     37    if( sequence[sequence.length-1] != 'drop.dragover' ) {
     38      sequence[sequence.length] = 'drop.dragover';
     39    }
     40  };
     41  drop.ondrop = function (e) {
     42    e.preventDefault();
     43    sequence[sequence.length] = 'drop.ondrop';
     44  };
     45  document.body.ondragenter = function (e) {
     46    if( e.target != this ) { return; }
     47    if( dragoverhasfired ) {
     48      sequence[sequence.length] = 'body.dragenter';
     49    }
     50  };
     51  document.body.ondragover = function (e) {
     52    if( e.target != this ) { return; }
     53    if( dragoverhasfired ) {
     54      if( sequence[sequence.length-1] != 'body.dragover' ) {
     55        sequence[sequence.length] = 'body.dragover';
     56      }
     57    }
     58  };
     59  drag.ondragend = function (e) {
     60    sequence = sequence.join('=&gt;')
     61    var desiredsequence = (['drop.dragenter','body.dragenter','body.dragover']).join('=&gt;')
     62    if( sequence == desiredsequence ) {
     63      document.getElementsByTagName('div')[2].innerHTML = 'PASS';
     64    } else {
     65      document.getElementsByTagName('div')[2].innerHTML = 'FAIL, got:<br>'+sequence+'<br>instead of:<br>'+desiredsequence;
     66    }
     67  };
     68 };
     69    </script>
     70  </head>
     71  <body>
     72 
     73    <div draggable="true"></div><div></div>
     74    <div>&nbsp;</div>
     75    <p>Drag the orange square onto the blue square and release it.</p>
     76    <noscript><p>Enable JavaScript and reload</p></noscript>
     77 
     78  </body>
     79 </html>