You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.4KB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  6. </head>
  7. <body>
  8. <noscript>
  9. Включите JavaScript | Turn JavaScript on
  10. </noscript>
  11. <script>
  12. var адрес = localStorage.getItem("пуск");
  13. if (!адрес)
  14. {
  15. адрес = "https://bitbucket.org/gitjs/0000/raw/master/0000.js";
  16. }
  17. var gitjs = {};
  18. gitjs.uuid = function()
  19. {
  20. // https://stackoverflow.com/a/2117523
  21. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
  22. /[xy]/g,
  23. function(c)
  24. {
  25. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  26. return v.toString(16);
  27. }
  28. );
  29. };
  30. function запуститьGitJSЛокально(пуск)
  31. {
  32. eval(пуск);
  33. запуститьGitJS();
  34. }
  35. function запуститьGitJSПоСети(адрес)
  36. {
  37. function загрузилиПуск(пуск)
  38. {
  39. localStorage.setItem("0000", пуск);
  40. eval(пуск);
  41. запуститьGitJS();
  42. }
  43. function неУдалосьЗагрузитьПуск(ошибка)
  44. {
  45. var сообщение = `ОШИБКА | ERROR: '${ошибка}'`
  46. console.error(сообщение);
  47. document.body.append(сообщение);
  48. }
  49. var запрос = new XMLHttpRequest();
  50. запрос.onreadystatechange = function()
  51. {
  52. if (this.readyState == 4)
  53. {
  54. if (this.status == 200)
  55. {
  56. загрузилиПуск(this.responseText);
  57. }
  58. else
  59. {
  60. неУдалосьЗагрузитьПуск(this.status);
  61. }
  62. }
  63. }
  64. запрос.open("GET", адрес + "?" + gitjs.uuid());
  65. запрос.send();
  66. }
  67. var пуск = localStorage.getItem("0000");
  68. var сообщение =
  69. пуск ?
  70. "Загрузка пускового скрипта из кэша | Loading startup script from the cache" :
  71. `Загрузка пускового скрипта по сети | Loading startup script over network '${адрес}'`;
  72. document.body.innerHTML += `<p>${сообщение}</p>`;
  73. console.debug(сообщение);
  74. setTimeout(
  75. function()
  76. {
  77. if (пуск)
  78. {
  79. запуститьGitJSЛокально(пуск);
  80. }
  81. else
  82. {
  83. запуститьGitJSПоСети(адрес);
  84. }
  85. },
  86. 300
  87. );
  88. </script>
  89. </body>
  90. </html>