tor-browser

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

033.html (2470B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <title>Drag and drop without cancelling dragenter from non-target to non-target</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 window.onload = function () {
     21  var drag = document.getElementsByTagName('div')[0], sequence = [];
     22  drag.ondragstart = function (e) {
     23    e.dataTransfer.setData('text','hello');
     24    e.dataTransfer.effectAllowed = 'copy';
     25  };
     26  drag.ondragenter = function (e) {
     27    sequence[sequence.length] = 'drag.dragenter';
     28  };
     29  drag.ondragover = function (e) {
     30    if( sequence[sequence.length-1] != 'drag.dragover' ) {
     31      sequence[sequence.length] = 'drag.dragover';
     32    }
     33  };
     34  drag.ondragleave = function (e) {
     35    sequence[sequence.length] = 'drag.dragleave';
     36  };
     37  var drop = document.getElementsByTagName('div')[1];
     38  drop.ondragenter = function (e) {
     39    sequence[sequence.length] = 'drop.dragenter';
     40  };
     41  drop.ondragover = function (e) {
     42    if( sequence[sequence.length-1] != 'drop.dragover' ) {
     43      sequence[sequence.length] = 'drop.dragover';
     44    }
     45  };
     46  drop.ondrop = function (e) {
     47    e.preventDefault();
     48    sequence[sequence.length] = 'drop.ondrop';
     49  };
     50  document.body.ondragenter = function (e) {
     51    sequence[sequence.length] = ( e.target == this ) ? 'body.dragenter' : 'bubble.dragenter';
     52  };
     53  document.body.ondragover = function (e) {
     54    if( e.target != this ) { return; }
     55    if( sequence[sequence.length-1] != 'body.dragover' ) {
     56      sequence[sequence.length] = 'body.dragover';
     57    }
     58  };
     59  drag.ondragend = function (e) {
     60    sequence = sequence.join('=&gt;')
     61    var desiredsequence = (['drag.dragenter','bubble.dragenter','body.dragenter','body.dragover','drop.dragenter','bubble.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>