Async Clipboard Demo
HTML
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
JavaScript
async function clipboard_test() {
// =====================================
// Creating clipboard items for testing.
// =====================================
console.log("=== Creating Clipboard Items ===");
console.log("(a) Creating clipboard item 1 (static inline text)");
const item1 = new ClipboardItem({
"text/plain;charset=utf-8": "plain text data",
"text/html": "<b>html</b> data",
});
console.log("(b) Creating clipboard item 2 (text in blob)");
const item2 = new ClipboardItem({
// Text Blob instead of binary data for testing.
"text/svg": new Blob(["SVG DATA"], {type: "text/plain"})
});
console.log("(c) Creating clipboard item 3 (async Promise png blob)");
const item3 = new ClipboardItem({
"image/png": new Promise(function(resolve, reject) {
console.log("--- item 3: calcing promise png image data");
// Text Blob instead of binary data for testing.
resolve(new Blob(["ASYNC PNG IMAGE DATA"], {type: "text/plain"}));
}),
});
console.log("(d) Creating clipboard item 4 (delayed Function jpg blob)");
const item4 = ClipboardItem.createDelayed({
"image/jpg": () => {
console.log("--- item 4: calcing delayed function jpg image data");
// Text Blob instead of binary data for testing.
return(new Blob(["DELAYED JPG IMAGE DATA"], {type: "text/plain"}));
}
});
// =====================
// Clipboard write tests
// =====================
console.log(".");
console.log("=== Clipboard Writes ===");
console.log("(a) Writing plain text (inline)");
await clipboard.write([item1]);
printClipboardItems(clipboard.contents_);
console.log("(b) Writing text as Blob");
await clipboard.write([item2]);
printClipboardItems(clipboard.contents_);
console.log("(c) Writing Blob via async Promise");
await clipboard.write([item3]);
printClipboardItems(clipboard.contents_);
console.log("(d) Writing via delayed generation Function");
await...