helper.sub.js |
|
3763 |
nested.py |
<!DOCTYPE html>
<title>XFO.</title>
<body>
<script>
var gotMessage = false;
window.addEventListener("message", e => {
gotMessage = true;
window.parent.postMessage(e.data, "*");
});
var i = document.createElement("iframe");
i.src = "%s/x-frame-options/support/xfo.py?value=%s";
i.onload = _ => {
// Why 100ms timeout? Because that seems to be enough to stop the
// load event from racing with the onmessage event, and it's at least
// as long as the two renderAnimationFrame calls that used to be here.
setTimeout(_ => {
// The race condition problem we have is it is possible
// that the sub iframe is loaded before the postMessage is
// dispatched, as a result, the "Failed" message is sent
// out. So the way we fixed is we simply let the timeout
// to happen if we expect the "Loaded" postMessage to be
// sent
if (!gotMessage && %s != true) {
window.parent.postMessage("Failed", "*");
}
}, 100);
};
document.body.appendChild(i);
</script>
|
1414 |
redirect.py |
|
194 |
xfo.py |
<!DOCTYPE html>
<html>
<head>
<title>XFO.</title>
<script>window.parent.postMessage('Loaded', '*');</script>
</head>
<body>
Loaded
</body>
</html>
|
636 |