77 lines
2.7 KiB
HTML
77 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<style>
|
|
#source, #richDestination, #plainDestination {
|
|
font-size: 30px;
|
|
border: 1px blue dashed;
|
|
width: 100px;
|
|
}
|
|
</style>
|
|
<p>To manually test this, drag the text into the contenteditable, and then into the textarea. Observe the output.
|
|
You should see a pair of insertFromDrop events dispatched on richDestination followed by another pair of
|
|
insertFromDrop events dispatched on plainDestination.</p>
|
|
<div id="source">WebKit</div>
|
|
<div id="richDestination" contenteditable onbeforeinput=logInputEvent(event) oninput=logInputEvent(event)></div>
|
|
<textarea id="plainDestination" onbeforeinput=logInputEvent(event) oninput=logInputEvent(event)></textarea>
|
|
<div id="output"></div>
|
|
<script type="text/javascript">
|
|
if (window.internals && window.testRunner) {
|
|
internals.settings.setInputEventsEnabled(true);
|
|
testRunner.dumpAsText();
|
|
}
|
|
|
|
if (window.eventSender) {
|
|
moveToCenter(source);
|
|
doubleClick();
|
|
eventSender.leapForward(1000);
|
|
|
|
eventSender.mouseDown();
|
|
eventSender.leapForward(1000);
|
|
moveToCenter(richDestination);
|
|
eventSender.leapForward(1000);
|
|
eventSender.mouseUp();
|
|
eventSender.leapForward(1000);
|
|
|
|
moveToCenter(source);
|
|
doubleClick();
|
|
eventSender.leapForward(1000);
|
|
|
|
eventSender.mouseDown();
|
|
eventSender.leapForward(1000);
|
|
moveToCenter(plainDestination);
|
|
eventSender.leapForward(1000);
|
|
eventSender.mouseUp();
|
|
}
|
|
|
|
function dataTransferToString(dataTransfer)
|
|
{
|
|
if (!dataTransfer)
|
|
return "(null)"
|
|
|
|
return `{rich:${dataTransfer.getData("text/html")} plain:${dataTransfer.getData("text/plain")}}`;
|
|
}
|
|
|
|
function logInputEvent(event)
|
|
{
|
|
output.innerHTML += `(${event.target.id}): type=${event.type}, inputType=${event.inputType}, data="${event.data}" dataTransfer=${dataTransferToString(event.dataTransfer)}<br>`;
|
|
}
|
|
|
|
function doubleClick() {
|
|
eventSender.mouseDown();
|
|
eventSender.mouseUp();
|
|
eventSender.leapForward(100);
|
|
eventSender.mouseDown();
|
|
eventSender.mouseUp();
|
|
}
|
|
|
|
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>
|