| <!DOCTYPE html> |
| <html> |
| <meta name="viewport" content="width=device-width"> |
| <head> |
| <style> |
| body { |
| margin: 0; |
| padding: 0; |
| } |
| |
| h1, a, p { |
| font-size: 20px; |
| font-family: system-ui; |
| } |
| |
| h1 { |
| user-select: all; |
| -webkit-user-select: all; |
| } |
| |
| a { |
| display: inline-block; |
| text-decoration: none; |
| } |
| |
| a:active { |
| color: blue; |
| } |
| |
| textarea { |
| margin: 1em; |
| width: calc(100% - 2em); |
| font-size: 16px; |
| font-family: monospace; |
| } |
| </style> |
| </head> |
| <body> |
| <h1 id="regular">Regular text</h1> |
| <h1 id="regular-url">Regular text + URL data</h1> |
| <h1 id="regular-custom">Regular text + custom data</h1> |
| <h1 id="url">URL data only</h1> |
| <h1 id="custom">Custom data only</h1> |
| <img id="image" src="sunset-in-cupertino-200px.png"></img> |
| <img id="image-text" src="sunset-in-cupertino-200px.png"></img> |
| <a id="link" href="https://www.apple.com/">Apple Homepage</a> |
| <a id="link-custom" href="https://www.apple.com/">Apple Homepage</a> |
| <textarea rows="20" readonly id="text-output"></textarea> |
| </body> |
| <script> |
| window.allData = {}; |
| const textOutput = document.getElementById("text-output"); |
| |
| function collectDataForEvent(event, element) |
| { |
| allData = {}; |
| for (let type of event.dataTransfer.types) |
| allData[type] = event.dataTransfer.getData(type); |
| textOutput.value = JSON.stringify(allData, null, 4); |
| } |
| |
| const regular = document.getElementById("regular"); |
| regular.addEventListener("dragstart", event => collectDataForEvent(event, regular)); |
| |
| const regularURL = document.getElementById("regular-url"); |
| regularURL.addEventListener("dragstart", event => { |
| event.dataTransfer.setData("text/uri-list", "https://www.google.com"); |
| collectDataForEvent(event, regularURL); |
| }); |
| |
| const regularCustom = document.getElementById("regular-custom"); |
| regularCustom.addEventListener("dragstart", event => { |
| event.dataTransfer.setData("text/foo", "Hello world"); |
| collectDataForEvent(event, regularCustom); |
| }); |
| |
| const url = document.getElementById("url"); |
| url.addEventListener("dragstart", event => { |
| event.dataTransfer.clearData(); |
| event.dataTransfer.setData("text/uri-list", "https://www.google.com"); |
| collectDataForEvent(event, url); |
| }); |
| |
| const custom = document.getElementById("custom"); |
| custom.addEventListener("dragstart", event => { |
| event.dataTransfer.clearData(); |
| event.dataTransfer.setData("text/foo", "Hello world"); |
| collectDataForEvent(event, custom); |
| }); |
| |
| const image = document.getElementById("image"); |
| image.addEventListener("dragstart", event => collectDataForEvent(event, image)); |
| |
| const imageText = document.getElementById("image-text"); |
| imageText.addEventListener("dragstart", event => { |
| event.dataTransfer.setData("text/plain", "This is an image of Cupertino."); |
| collectDataForEvent(event, imageText); |
| }); |
| |
| const link = document.getElementById("link"); |
| link.addEventListener("dragstart", event => collectDataForEvent(event, link)); |
| |
| const linkCustom = document.getElementById("link-custom"); |
| linkCustom.addEventListener("dragstart", event => { |
| event.dataTransfer.setData("text/foo", "bar"); |
| collectDataForEvent(event, linkCustom); |
| }); |
| </script> |
| </html> |