example2.html 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Speedtest</title>
  5. <style type="text/css">
  6. html,
  7. body {
  8. margin: 0;
  9. padding: 0;
  10. border: none;
  11. text-align: center;
  12. }
  13. div.test {
  14. display: inline-block;
  15. margin: 1em;
  16. text-align: center;
  17. }
  18. div.testName,
  19. div.meterUnit {
  20. font-size: 3vw;
  21. }
  22. div.meter {
  23. font-size: 6vw;
  24. line-height: 1.5em;
  25. height: 1.5em !important;
  26. }
  27. .flash {
  28. animation: flash 0.6s linear infinite;
  29. }
  30. @keyframes flash {
  31. 0% { opacity: 0.6; }
  32. 50% { opacity: 1; }
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <h1>Speedtest</h1>
  38. <div class="test">
  39. <div class="testName">Download</div>
  40. <div class="meter">&nbsp;<span id="download"></span>&nbsp;</div>
  41. <div class="meterUnit">Mbit/s</div>
  42. </div>
  43. <div class="test">
  44. <div class="testName">Upload</div>
  45. <div class="meter">&nbsp;<span id="upload"></span>&nbsp;</div>
  46. <div class="meterUnit">Mbit/s</div>
  47. </div>
  48. <div class="test">
  49. <div class="testName">Latency</div>
  50. <div class="meter">&nbsp;<span id="ping"></span>&nbsp;</div>
  51. <div class="meterUnit">ms</div>
  52. </div>
  53. <div class="test">
  54. <div class="testName">Jitter</div>
  55. <div class="meter">&nbsp;<span id="jitter"></span>&nbsp;</div>
  56. <div class="meterUnit">ms</div>
  57. </div>
  58. <div id="ip"></div>
  59. <script type="text/javascript">
  60. var w = new Worker('speedtest_worker.min.js')
  61. var interval = setInterval(function () { w.postMessage('status') }, 100)
  62. w.onmessage = function (event) {
  63. var data = event.data.split(';')
  64. var status = Number(data[0])
  65. var dl = document.getElementById('download')
  66. var ul = document.getElementById('upload')
  67. var ping = document.getElementById('ping')
  68. var ip = document.getElementById('ip')
  69. var jitter = document.getElementById('jitter')
  70. dl.className = status === 1 ? 'flash' : ''
  71. ping.className = status === 2 ? 'flash' : ''
  72. jitter.className = ul.className = status === 3 ? 'flash' : ''
  73. if (status >= 4) {
  74. clearInterval(interval)
  75. }
  76. dl.textContent = data[1]
  77. ul.textContent = data[2]
  78. ping.textContent = data[3]
  79. jitter.textContent = data[5]
  80. ip.textContent = 'Your IP: ' + data[4]
  81. }
  82. w.postMessage('start {"url_dl": "garbage.php", "url_ul": "empty.php", "url_ping": "empty.php", "time_dl": "10", "time_ul": "15", "count_ping": "30"}') // start with custom parameters. paths are relative to js file. you can omit parameters that you don't want to change
  83. </script>
  84. </body>
  85. </html>