Source code

Revision control

Copy as Markdown

Other Tools

<!doctype html>
<html>
<script type="application/javascript">
var img;
var audio;
var iframe;
addEventListener("message", function(e) {
mess = JSON.parse(e.data);
if ("img" in mess)
img.src = mess.img;
else if ("audio" in mess)
audio.src = mess.audio
else if ("iframe" in mess)
iframe.src = mess.iframe;
else if ("xhr" in mess) {
let xhr = new XMLHttpRequest();
xhr.onerror = function() {
sendItUp({ didError: true });
}
xhr.onload = function() {
sendItUp({ text: xhr.responseText });
}
try {
xhr.open("GET", mess.xhr);
xhr.send();
}
catch (ex) {
sendItUp({ didThrow: true });
}
}
}, false);
function sendItUp(obj) {
window.parent.postMessage(JSON.stringify(obj), "*");
}
function audioNotifyParent(e) {
sendItUp({ type: e.type });
}
function imgNotifyParent(e) {
sendItUp({ type: e.type,
width: e.target.width,
height: e.target.height });
}
function iframeNotifyParent(e) {
res = { type: e.type };
try {
res.text = e.target.contentDocument.getElementsByTagName("p")[0].textContent;
} catch (ex) {}
try {
res.imgWidth = e.target.contentDocument.getElementById("img").width;
} catch (ex) {}
sendItUp(res);
}
onload = function() {
img = document.getElementById('img');
img.onerror = img.onload = imgNotifyParent;
iframe = document.getElementById('iframe');
iframe.onerror = iframe.onload = iframeNotifyParent;
audio = document.getElementById('audio');
audio.onerror = audio.onloadeddata = audioNotifyParent;
}
</script>
<body>
<img id=img>
<audio id=audio>
<iframe id=iframe></iframe>
</html>