dnd-datatransfer-setdragimage-manual.html (2957B)
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <style> 6 div { 7 margin: 0em; 8 padding: 2em; 9 } 10 11 #source1, 12 #source2 { 13 color: blue; 14 border: 1px solid black; 15 } 16 17 #target { 18 border: 1px solid black; 19 } 20 </style> 21 <script> 22 function getSolidColorImageBase64(color) { 23 var canvas = document.createElement('canvas'); 24 canvas.width = 256; 25 canvas.height = 256; 26 var ctx = canvas.getContext('2d'); 27 ctx.fillStyle = color; 28 ctx.fillRect(0, 0, canvas.width, canvas.height); 29 return canvas.toDataURL(); 30 } 31 function setDragImage(ev) { 32 var dragImage = document.createElement('img'); 33 if (ev.type === 'dragstart') { 34 dragImage = document.getElementById('dragImage'); 35 } 36 if (ev.type === 'dragover') { 37 // Red color image 38 dragImage.src = getSolidColorImageBase64('#FF0000'); 39 } 40 if (ev.type === 'dragenter') { 41 // Green color image 42 dragImage.src = getSolidColorImageBase64('#00FF00'); 43 } 44 if (ev.type === 'drop') { 45 // Yellow color image 46 dragImage.src = getSolidColorImageBase64('#FFFF00'); 47 } 48 ev.dataTransfer.setDragImage(dragImage, 10, 10); 49 } 50 51 function dragstart_with_image_handler(ev) { 52 ev.dataTransfer.setData("text/plain", ev.target.id); 53 setDragImage(ev); 54 } 55 56 function dragstart_without_image_handler(ev) { 57 ev.dataTransfer.setData("text/plain", ev.target.id); 58 } 59 60 function dragover_handler(ev) { 61 setDragImage(ev); 62 ev.preventDefault(); 63 } 64 65 function drag_enter(ev) { 66 setDragImage(ev); 67 ev.preventDefault(); 68 } 69 70 function drop_handler(ev) { 71 setDragImage(ev); 72 ev.preventDefault(); 73 var data = ev.dataTransfer.getData("text"); 74 ev.target.appendChild(document.getElementById(data)); 75 } 76 </script> 77 </head> 78 79 <body> 80 <div id="dragImageDiv"> 81 </div> 82 <div> 83 <p id="source1" ondragstart="dragstart_with_image_handler(event);" draggable="true"> 84 Select this element, drag it to the Drop Zone and drag image 85 should be visible. The drag image should be identical to the above image. 86 And the drag image should not change through out the drag and drop operation. 87 </p> 88 </div> 89 <div> 90 <p id="source2" ondragstart="dragstart_without_image_handler(event);" draggable="true"> 91 Select this element, drag it to the Drop Zone and drag image 92 should not be visible. 93 </p> 94 </div> 95 <div id="target" ondragenter="drag_enter(event);" ondrop="drop_handler(event);" ondragover="dragover_handler(event);"> 96 Drop Zone 97 </div> 98 <script> 99 var initialDragImage = document.createElement('img') 100 // Blue color image 101 initialDragImage.src = getSolidColorImageBase64('#0000FF') 102 initialDragImage.id = "dragImage" 103 var dragImageDiv = document.getElementById('dragImageDiv') 104 dragImageDiv.appendChild(initialDragImage); 105 </script> 106 </body> 107 108 </html>