gecko-dev/dom/workers/test/multi_sharedWorker_frame.html

69 строки
1.9 KiB
HTML

<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html>
<head>
<title>Test for SharedWorker</title>
</head>
<body onload="notifyOpenerLoadEvent();">
<script type="text/javascript">
"use strict";
function postMessageToParentOrOpener(message) {
if (parent != window) {
parent.postMessage(message, "*");
}
if (opener) {
opener.postMessage(message, "*");
}
}
// Used by test_multi_sharedWorker_lifetimes.html
function notifyOpenerLoadEvent() {
if (opener) {
opener.postMessage({event: "load"}, "*");
}
}
function debug(message) {
if (typeof(message) != "string") {
throw new Error("debug() only accepts strings!");
}
postMessageToParentOrOpener(message);
}
let worker;
window.addEventListener("message", function(event) {
if (!worker) {
worker = new SharedWorker("multi_sharedWorker_sharedWorker.js",
"FrameWorker");
worker.onerror = function(event) {
debug("Worker error: " + event.message);
event.preventDefault();
let data = {
type: "error",
message: event.message,
filename: event.filename,
lineno: event.lineno,
isErrorEvent: event instanceof ErrorEvent
};
postMessageToParentOrOpener(data);
};
worker.port.onmessage = function(event) {
debug("Worker message: " + JSON.stringify(event.data));
postMessageToParentOrOpener(event.data);
};
}
debug("Posting message: " + JSON.stringify(event.data));
worker.port.postMessage(event.data);
});
</script>
</body>
</html>