60 lines
1.4 KiB
HTML
60 lines
1.4 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Subscribe to events from pad.ma iframe embed</title>
|
|
</head>
|
|
<body>
|
|
<iframe id="padembed" width="640" height="360" name="iframename" src="https://pad.ma/AGR/editor/00:04:55.800,00:00:21.880,00:04:55.800#embed" frameborder="0" allowfullscreen></iframe>
|
|
<button id="setUrl">
|
|
Set Iframe URL
|
|
</button>
|
|
<div id="messages">
|
|
|
|
</div>
|
|
<script>
|
|
|
|
const $iframe = document.getElementById('padembed');
|
|
|
|
window.addEventListener('message', listener, false);
|
|
|
|
function listener(event) {
|
|
const data = JSON.parse(event.data);
|
|
if (data.event === 'init') document.getElementById(data.target).isInit = true;
|
|
console.log('received event', event);
|
|
const $message = document.createElement('div');
|
|
$message.innerHTML = event.data;
|
|
document.getElementById('messages').appendChild($message);
|
|
}
|
|
|
|
document.getElementById('setUrl').addEventListener('click', function(e) {
|
|
console.log('clicked button');
|
|
$iframe.contentWindow.postMessage(JSON.stringify({
|
|
data: {
|
|
url: '/AGR/editor/00:05:55.800#embed'
|
|
},
|
|
event: 'seturl'
|
|
}), '*');
|
|
});
|
|
|
|
$iframe.addEventListener('load', () => {
|
|
let timeout;
|
|
function init() {
|
|
console.log('init called');
|
|
if ($iframe.isInit) {
|
|
clearTimeout(timeout);
|
|
return;
|
|
}
|
|
$iframe.contentWindow.postMessage(JSON.stringify({
|
|
data: {
|
|
oxid: 'padembed'
|
|
},
|
|
event: 'init'
|
|
}), '*');
|
|
timeout = setTimeout(init, 250);
|
|
}
|
|
init();
|
|
});
|
|
</script>
|
|
</body>
|
|
|
|
</html> |