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.

69 lines
2.2KB

  1. var мир = {};
  2. мир.вZ64 = function(строка)
  3. {
  4. var байты = new TextEncoder("utf-8").encode(строка);
  5. var архив = pako.deflate(байты, { to: 'string' });
  6. return base64js.fromByteArray(архив);
  7. };
  8. мир.изZ64 = function(строка)
  9. {
  10. var архив = base64js.toByteArray(строка);
  11. var байты = pako.inflate(архив);
  12. return new TextDecoder("utf-8").decode(байты);
  13. };
  14. мир.uuid = function()
  15. {
  16. // https://stackoverflow.com/a/2117523
  17. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
  18. /[xy]/g,
  19. function(c)
  20. {
  21. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  22. return v.toString(16);
  23. }
  24. );
  25. };
  26. мир.назначитьКнопкамСобытия = function(события, список)
  27. {
  28. for (var номер in список)
  29. {
  30. const пара = список[номер];
  31. var кнопка = document.getElementById(пара[0]);
  32. кнопка.addEventListener("click", function(_) {
  33. события.уведомить(пара[1]);
  34. });
  35. }
  36. };
  37. мир.параметрыЗапуска = function()
  38. {
  39. var параметры = {};
  40. var запрос = window.location.search.substring(1);
  41. var аргументы = запрос.split("&");
  42. for (var номер in аргументы)
  43. {
  44. var арг = аргументы[номер];
  45. var позицияЗнака = арг.indexOf("=");
  46. // Лишь ключ.
  47. if (позицияЗнака == -1)
  48. {
  49. var ключ = decodeURIComponent(арг);
  50. параметры[ключ] = null;
  51. }
  52. // Ключ со значением.
  53. else
  54. {
  55. var сыройКлюч = арг.slice(0, позицияЗнака);
  56. var сыроеЗначение = арг.slice(позицияЗнака + 1);
  57. var ключ = decodeURIComponent(сыройКлюч);
  58. var значение = decodeURIComponent(сыроеЗначение);
  59. параметры[ключ] = значение;
  60. }
  61. }
  62. return параметры;
  63. };