blob: a2c1d9dadbed06b628a5cd1dde6b3d7f5645166f [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8" />
<meta viewport="width=device-width, initial-scale=1.0" />
<style>
html {
height: 100%;
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
display: grid;
}
button {
height: 100vh;
width: 100%;
border: 1px solid black;
}
</style>
<body>
<button id="share-button">SHARE!</button>
<script>
window.addEventListener(
"message",
async (event) => {
const shareButton = document.getElementById("share-button");
const { action } = event.data;
let result = null;
let exceptionMessage;
let exceptionName;
switch (action) {
case "call canShare()":
try {
result = navigator.canShare({ text: "some text" });
} catch (e) {
exceptionMessage = e.message;
exceptionName = e.name;
}
break;
case "call share()":
await userActivationFromParent(shareButton, event);
try {
await navigator.share({ text: "some text" });
result = "share completed";
} catch (e) {
result = "threw";
exceptionMessage = e.message;
exceptionName = e.name;
}
break;
default:
throw new Error(`Unknown action: ${action}`);
}
event.source.postMessage(
{ action, result, exceptionMessage, exceptionName },
event.origin
);
},
{ once: true }
);
function userActivationFromParent(shareButton, event) {
return new Promise((resolve) => {
shareButton.addEventListener("click", resolve, { once: true });
event.source.postMessage("activate me!", event.origin);
});
}
</script>
</body>