forked from go-rod/rod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrag.html
122 lines (107 loc) · 2.83 KB
/
drag.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<!-- Copied from https://developer.mozilla.org/en-US/docs/Web/API/Document/drag_event -->
<html>
<style>
#draggable {
width: 200px;
height: 20px;
text-align: center;
background: white;
}
.dropzone {
width: 200px;
height: 20px;
background: blueviolet;
margin-bottom: 10px;
padding: 10px;
}
</style>
<body>
<div class="dropzone">
<div
id="draggable"
draggable="true"
ondragstart="event.dataTransfer.setData('text/plain',null)"
>
This div is draggable
</div>
</div>
<div class="dropzone"></div>
</body>
<script>
window.dragTrack = ''
document.onmousedown = (e) => {
window.dragTrack += ' down ' + e.clientX + ' ' + e.clientY
}
document.onmousemove = (e) => {
if (e.clientX === 0 && e.clientY === 0) return
window.dragTrack += ' move ' + e.clientX + ' ' + e.clientY
}
document.onmouseup = (e) => {
window.dragTrack += ' up ' + e.clientX + ' ' + e.clientY
}
var dragged
/* events fired on the draggable target */
document.addEventListener('drag', function () {}, false)
document.addEventListener(
'dragstart',
function (event) {
// store a ref. on the dragged elem
dragged = event.target
// make it half transparent
event.target.style.opacity = 0.5
},
false
)
document.addEventListener(
'dragend',
function (event) {
// reset the transparency
event.target.style.opacity = ''
},
false
)
/* events fired on the drop targets */
document.addEventListener(
'dragover',
function (event) {
// prevent default to allow drop
event.preventDefault()
},
false
)
document.addEventListener(
'dragenter',
function (event) {
// highlight potential drop target when the draggable element enters it
if (event.target.className === 'dropzone') {
event.target.style.background = 'purple'
}
},
false
)
document.addEventListener(
'dragleave',
function (event) {
// reset background of potential drop target when the draggable element leaves it
if (event.target.className === 'dropzone') {
event.target.style.background = ''
}
},
false
)
document.addEventListener(
'drop',
function (event) {
// prevent default action (open as link for some elements)
event.preventDefault()
// move dragged elem to the selected drop target
if (event.target.className === 'dropzone') {
event.target.style.background = ''
dragged.parentNode.removeChild(dragged)
event.target.appendChild(dragged)
}
},
false
)
</script>
</html>