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

Reply via email to