<!--
if ('onmessage' in self) { // dedicated worker
  onmessage = function(e) {
    postMessage(navigator.onLine);
  }
} else { // shared worker
  onconnect = function(e) {
    e.ports[0].onmessage = function(e) {
      this.postMessage(navigator.onLine);
    }
  }
}
/*
-->
<!doctype html>
<title>navigator.onLine in dedicated worker</title>
<pre>Log:
</pre>
<script>
var pre = document.querySelector('pre');
var worker, shared;
try { worker = new Worker('#'); } catch(e) { pre.textContent += '\nnew Worker threw: ' + e.message; }
try { shared = new SharedWorker('#', ''); } catch(e) { pre.textContent += '\nnew SharedWorker threw: ' + e.message; }
if (worker) {
  worker.onmessage = function(e) {
    pre.textContent += '\ndedicated worker: ' + e.data;
  }
}
if (shared) {
  shared.port.onmessage = function(e) {
    pre.textContent += '\nshared worker: ' + e.data;
  }
}
function update() {
  pre.textContent += '\n\n' + new Date() + '\n<script>: ' + navigator.onLine;
  if (worker) worker.postMessage(1);
  if (shared) shared.port.postMessage(1);
}
update();
ononline = onoffline = update;
</script>
<p>As you go online and offline, the log should be filled with the correct status of navigator.onLine.</p>
<p><button onclick="update()">Check navigator.onLine status</button></p>
<!--
*/
//-->
