[whatwg] Using Web Workers without external files

Simon Pieters simonp at opera.com
Wed Sep 23 03:34:01 PDT 2009


I'd like a way to use workers without having to use an external resource.  
This would allow easier testing, mashups, small standalone apps, and so  
forth.

Possible ways to do it:

* Support data: URLs in the constructor. A bit annoying to work with,  
though.
      new Worker('data:...');
      new SharedWorker('data:...', 'foo');
* Point to an element within the same document with a fragment identifier.
      <script type=text/x-worker id=worker>...</script>
      new Worker('#worker');
      new SharedWorker('#worker', 'foo');
* Pass a string to the constructor with an additional parameter saying  
that it's a string of script rather than a URL.
      new Worker('...', true);
      new SharedWorker('...', 'foo', true);
* Mint new constructors that you pass a string to instead of a URL.
      new WorkerXYZ('...');
      new SharedWorkerXYZ('...', 'foo');
* ...other?


Currently it seems it is possible to work around the external resource  
limitation by doing:

     <!--
     postMessage('works!');
     /*
     -->
     <!doctype html>
     <script>
     // The empty string should work too, per spec, AFAICT, but
     // Firefox and Chrome throw an exception for the empty string
     var worker = new Worker('?');
     worker.onmessage = function(e) { alert(e.data) }
     </script>
     <!--
     */
     //-->

...but this is a bit too hacky for my taste.

-- 
Simon Pieters
Opera Software


More information about the whatwg mailing list