70 lines
2.1 KiB
HTML
70 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<style>
|
|
#source, #destination, #copy {
|
|
width: 100vw;
|
|
height: 20vh;
|
|
border: blue dashed 1px;
|
|
font-size: 18vh;
|
|
position: absolute;
|
|
opacity: 0.5;
|
|
text-align: center;
|
|
}
|
|
#source {
|
|
top: 0vh;
|
|
}
|
|
#destination {
|
|
top: 20vh;
|
|
}
|
|
</style>
|
|
<p>To manually test this, drag the text in the first editing area into the second. The first area should retain the
|
|
text, the second area should be blank, and the third area should show an HTML representation of the first area with
|
|
style information.</p>
|
|
<p>Source:</p>
|
|
<div id="source" contenteditable onbeforeinput=handleBeforeInput(event)><code>input events</code></div>
|
|
<p>Destination:</p>
|
|
<div id="destination" contenteditable onbeforeinput=handleBeforeInput(event)></div>
|
|
<p>HTML content:</p>
|
|
<div id="result"></div>
|
|
<script type="text/javascript">
|
|
if (window.internals && window.testRunner) {
|
|
internals.settings.setInputEventsEnabled(true);
|
|
testRunner.dumpAsText();
|
|
}
|
|
|
|
source.focus();
|
|
document.execCommand("selectAll");
|
|
|
|
if (window.eventSender) {
|
|
moveToCenter(source);
|
|
eventSender.leapForward(500);
|
|
eventSender.mouseDown();
|
|
eventSender.leapForward(1000);
|
|
moveToCenter(destination);
|
|
eventSender.leapForward(500);
|
|
eventSender.mouseUp();
|
|
}
|
|
|
|
function handleBeforeInput(event)
|
|
{
|
|
if (event.inputType === "insertFromDrop") {
|
|
result.textContent = event.dataTransfer.getData("text/html");
|
|
event.preventDefault();
|
|
return;
|
|
}
|
|
|
|
if (event.inputType === "deleteByDrag")
|
|
event.preventDefault();
|
|
}
|
|
|
|
function moveToCenter(element)
|
|
{
|
|
let x = element.offsetParent.offsetLeft + element.offsetLeft + element.offsetWidth / 2;
|
|
let y = element.offsetParent.offsetTop + element.offsetTop + element.offsetHeight / 2;
|
|
eventSender.mouseMoveTo(x, y);
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|