workers-blobworkers.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // by jussi-kalliokoski
  2. // This test is asynchronous. Watch out.
  3. // The test will potentially add garbage to console.
  4. (function(){
  5. try {
  6. // we're avoiding using Modernizr._domPrefixes as the prefix capitalization on
  7. // these guys are notoriously peculiar.
  8. var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.OBlobBuilder || window.BlobBuilder,
  9. URL = window.MozURL || window.webkitURL || window.MSURL || window.OURL || window.URL;
  10. var data = 'Modernizr',
  11. bb = new BlobBuilder();
  12. bb.append('this.onmessage=function(e){postMessage(e.data)}');
  13. var url = URL.createObjectURL(bb.getBlob()),
  14. worker = new Worker(url);
  15. bb = null;
  16. worker.onmessage = function(e) {
  17. worker.terminate();
  18. URL.revokeObjectURL(url);
  19. Modernizr.addTest('blobworkers', data === e.data);
  20. worker = null;
  21. };
  22. // Just in case...
  23. worker.onerror = function() {
  24. Modernizr.addTest('blobworkers', false);
  25. worker = null;
  26. };
  27. setTimeout(function() {
  28. Modernizr.addTest('blobworkers', false);
  29. }, 200);
  30. worker.postMessage(data);
  31. } catch (e) {
  32. Modernizr.addTest('blobworkers', false);
  33. }
  34. }());