InlineWorker.js 900 B

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use strict';
  2. // http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string
  3. var URL = window.URL || window.webkitURL;
  4. module.exports = function (content, url) {
  5. try {
  6. try {
  7. var blob;
  8. try {
  9. // BlobBuilder = Deprecated, but widely implemented
  10. var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
  11. blob = new BlobBuilder();
  12. blob.append(content);
  13. blob = blob.getBlob();
  14. } catch (e) {
  15. // The proposed API
  16. blob = new Blob([content]);
  17. }
  18. return new Worker(URL.createObjectURL(blob));
  19. } catch (e) {
  20. return new Worker('data:application/javascript,' + encodeURIComponent(content));
  21. }
  22. } catch (e) {
  23. if (!url) {
  24. throw Error('Inline worker is not supported');
  25. }
  26. return new Worker(url);
  27. }
  28. };