Guest User

Untitled

a guest
Nov 17th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. (function (workerScript) {
  2. if (!/MSIE 10/i.test (navigator.userAgent)) {
  3. try {
  4. var blob = new Blob (["\
  5. var fakeIdToId = {};\
  6. onmessage = function (event) {\
  7. var data = event.data,\
  8. name = data.name,\
  9. fakeId = data.fakeId,\
  10. time;\
  11. if(data.hasOwnProperty('time')) {\
  12. time = data.time;\
  13. }\
  14. switch (name) {\
  15. case 'setInterval':\
  16. fakeIdToId[fakeId] = setInterval(function () {\
  17. postMessage({fakeId: fakeId});\
  18. }, time);\
  19. break;\
  20. case 'clearInterval':\
  21. if (fakeIdToId.hasOwnProperty (fakeId)) {\
  22. clearInterval(fakeIdToId[fakeId]);\
  23. delete fakeIdToId[fakeId];\
  24. }\
  25. break;\
  26. case 'setTimeout':\
  27. fakeIdToId[fakeId] = setTimeout(function () {\
  28. postMessage({fakeId: fakeId});\
  29. if (fakeIdToId.hasOwnProperty (fakeId)) {\
  30. delete fakeIdToId[fakeId];\
  31. }\
  32. }, time);\
  33. break;\
  34. case 'clearTimeout':\
  35. if (fakeIdToId.hasOwnProperty (fakeId)) {\
  36. clearTimeout(fakeIdToId[fakeId]);\
  37. delete fakeIdToId[fakeId];\
  38. }\
  39. break;\
  40. }\
  41. }\
  42. "]);
  43. // Obtain a blob URL reference to our worker 'file'.
  44. workerScript = window.URL.createObjectURL(blob);
  45. } catch (error) {
  46. /* Blob is not supported, use external script instead */
  47. }
  48. }
  49. var worker,
  50. fakeIdToCallback = {},
  51. lastFakeId = 0,
  52. maxFakeId = 0x7FFFFFFF, // 2 ^ 31 - 1, 31 bit, positive values of signed 32 bit integer
  53. logPrefix = 'HackTimer.js by turuslan: ';
  54. if (typeof (Worker) !== 'undefined') {
  55. function getFakeId () {
  56. do {
  57. if (lastFakeId == maxFakeId) {
  58. lastFakeId = 0;
  59. } else {
  60. lastFakeId ++;
  61. }
  62. } while (fakeIdToCallback.hasOwnProperty (lastFakeId));
  63. return lastFakeId;
  64. }
  65. try {
  66. worker = new Worker (workerScript);
  67. console.log(window);
  68. window.setInterval = function (callback, time /* , parameters */) {
  69. var fakeId = getFakeId ();
  70. fakeIdToCallback[fakeId] = {
  71. callback: callback,
  72. parameters: Array.prototype.slice.call(arguments, 2)
  73. };
  74. worker.postMessage ({
  75. name: 'setInterval',
  76. fakeId: fakeId,
  77. time: time
  78. });
  79. return fakeId;
  80. };
  81. window.clearInterval = function (fakeId) {
  82. if (fakeIdToCallback.hasOwnProperty(fakeId)) {
  83. delete fakeIdToCallback[fakeId];
  84. worker.postMessage ({
  85. name: 'clearInterval',
  86. fakeId: fakeId
  87. });
  88. }
  89. };
  90. window.setTimeout = function (callback, time /* , parameters */) {
  91. var fakeId = getFakeId ();
  92. fakeIdToCallback[fakeId] = {
  93. callback: callback,
  94. parameters: Array.prototype.slice.call(arguments, 2),
  95. isTimeout: true
  96. };
  97. worker.postMessage ({
  98. name: 'setTimeout',
  99. fakeId: fakeId,
  100. time: time
  101. });
  102. return fakeId;
  103. };
  104. window.clearTimeout = function (fakeId) {
  105. if (fakeIdToCallback.hasOwnProperty(fakeId)) {
  106. delete fakeIdToCallback[fakeId];
  107. worker.postMessage ({
  108. name: 'clearTimeout',
  109. fakeId: fakeId
  110. });
  111. }
  112. };
  113. worker.onmessage = function (event) {
  114. var data = event.data,
  115. fakeId = data.fakeId,
  116. request,
  117. parameters,
  118. callback;
  119. if (fakeIdToCallback.hasOwnProperty(fakeId)) {
  120. request = fakeIdToCallback[fakeId];
  121. callback = request.callback;
  122. parameters = request.parameters;
  123. if (request.hasOwnProperty ('isTimeout') && request.isTimeout) {
  124. delete fakeIdToCallback[fakeId];
  125. }
  126. }
  127. if (typeof (callback) === 'string') {
  128. try {
  129. callback = new Function (callback);
  130. } catch (error) {
  131. console.log (logPrefix + 'Error parsing callback code string: ', error);
  132. }
  133. }
  134. if (typeof (callback) === 'function') {
  135. callback.apply (window, parameters);
  136. }
  137. };
  138. worker.onerror = function (event) {
  139. console.log (event);
  140. };
  141. console.log (logPrefix + 'Initialisation succeeded');
  142. } catch (error) {
  143. console.log (logPrefix + 'Initialisation failed');
  144. console.error (error);
  145. }
  146. } else {
  147. console.log (logPrefix + 'Initialisation failed - HTML5 Web Worker is not supported');
  148. }
  149. }) ('HackTimerWorker.js');
Add Comment
Please, Sign In to add comment