blob: c91d6060017c33929431136289bc6fd44670c97b [file] [log] [blame]
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<style>
body, html {
width: 100%;
height: 100%;
font-family: monospace;
}
.heading {
display: block;
width: 100%;
border-top: 2px gray dashed;
margin-top: 20px;
box-sizing: border-box;
}
</style>
<script>
function setup()
{
document.body.addEventListener("paste", event => {
dumpAsOutput(event.clipboardData);
event.preventDefault();
});
document.body.addEventListener("drop", event => {
dumpAsOutput(event.dataTransfer);
event.preventDefault();
});
document.body.addEventListener("beforeinput", event => event.preventDefault());
document.body.focus();
}
function dumpAsOutput(dataTransfer)
{
document.body.contentEditable = false;
types.textContent = dataTransfer.types.join(", ");
items.textContent = Array.from(dataTransfer.items).map(item => `(${item.kind.toUpperCase()}, ${item.type})`).join(", ");
files.textContent = Array.from(dataTransfer.files).map(file => `('${file.name}', ${file.type})`).join(", ");
urlData.textContent = dataTransfer.getData("text/uri-list");
textData.textContent = dataTransfer.getData("text/plain");
let markup = dataTransfer.getData("text/html");
htmlData.insertAdjacentHTML("beforeend", markup);
rawHTMLData.textContent = markup;
}
function reset()
{
Array.from(document.getElementsByClassName("output")).map(element => {
element.innerHTML = "";
});
document.body.contentEditable = true;
}
</script>
</head>
<body contenteditable onload=setup()>
<h3 class="heading">Types</h3>
<div class="output" id="types"></div>
<h3 class="heading">Items</h3>
<div class="output" id="items"></div>
<h3 class="heading">Files</h3>
<div class="output" id="files"></div>
<h3 class="heading">text/plain</h3>
<div class="output" id="textData"></div>
<h3 class="heading">text/uri-list</h3>
<div class="output" id="urlData"></div>
<h3 class="heading">text/html</h3>
<div class="output" id="htmlData"></div>
<div class="output" id="rawHTMLData"></div>
</body>
</html>