Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как сделать чтобы websocket соединения не разрывалось когда комп уходит в спящий режим?

    Так вот все вышеописанное работает хорошо но до того момента как наш комп не уйдет в спящий режим, и тогда , примерно через 30 сек вебсокет соединения разрывается

    По вполне понятной причине:
    Вебсокет работает поверх TCP. Когда в рамках TCP-соединения не передаются никакие сообщения - оно разрывается, причём вроде аж на уровне провайдера.

    Смысла держать вебсокет работающим даже когда компьютер не работает нет, как и технической возможности.
    Просто учитывай это и поднимай вебсокет заново, если он вдруг разорвался.
    Можно попутно ещё запросить сообщения, которые были отправлены с момента разрыва (например с даты последнего полученного сообщения)
    Ответ написан
    Комментировать
  • Как преобразовать/скачать книгу с сайта "онлайн-библиотеки"?

    Так как на сайте не предусмотрена такая возможность - только реверсить.
    На сайте нет никаких защит от пиратства, так что можешь зайти во вкладку network и увидеть, какие отправляются запросы.
    В данном случае используется graphql и для получения списка страниц используется такой запрос:
    query Book($id: ID!) {
      book(id: $id) {
        id
        title
        authors {
          full_name
          __typename
        }
        docviewer_htmls_urls
        docviewer_thumbnails_urls
        outline
        is_on_shelf
        bookmarks {
          page
          text
          ts
          __typename
        }
        search_index_url
        text_by_pages_url
        last_read_page
        __typename
      }
      me {
        uid
        __typename
      }
    }

    Где id - Id книги.
    В ответ приходит такое:
    {
        "data": {
            "book": {
                "id": "14137",
                "title": "\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0440\u043e\u0434\u0430 \u0441\u0430\u0445\u0430 \u0438 \u0435\u0433\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b",
                "authors": [
                    {
                        "full_name": "\u0413\u043e\u0433\u043e\u043b\u0435\u0432 \u0410\u043d\u0430\u0442\u043e\u043b\u0438\u0439 \u0418\u0433\u043d\u0430\u0442\u044c\u0435\u0432\u0438\u0447",
                        "__typename": "Author"
                    }
                ],
                "docviewer_htmls_urls": [
                    "https:\/\/e.nlrs.ru\/online2\/view\/14137\/page_1.html"
                ],
                "docviewer_thumbnails_urls": [
                    "https:\/\/e.nlrs.ru\/online2\/view\/14137\/thumbnails\/256\/bg1_thumb_256.jpg"
                ],
                "outline": "[{\"text\":\"\u041e\u0431\u043b\u043e\u0436\u043a\u0430\",\"href\":\"#pf1\",\"children\":null},{\"text\":\"\u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044d\u043d\u0442\u043e\u0433\u0435\u043d\u0435\u0437\u0430 \u044f\u043a\u0443\u0442\u0441\u043a\u043e\u0439 \u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0441\u0442\u0438\",\"href\":\"#pf4\",\"children\":null},{\"text\":\"\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435\",\"href\":\"#pf5\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u043f\u0435\u0440\u0432\u0430\u044f. \\n\u0418\u0421\u0422\u041e\u041a\u0418 \u042d\u0422\u041d\u041e\u0413\u0415\u041d\u0415\u0417\u0410 \\n(\u0441\u043a\u0438\u0444\u043e-\u0445\u0443\u043d\u043d\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u044f\u043a\u0443\u0442\u0441\u043a\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0435)\",\"href\":\"#pf5\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0432\u0442\u043e\u0440\u0430\u044f. \u0414\u0420\u0415\u0412\u041d\u0418\u0415 \u0418 \u0421\u0420\u0415\u0414\u041d\u0415\u0412\u0415\u041a\u041e\u0412\u042b\u0415 \u0422\u042e\u0420\u041a\u0421\u041a\u0418\u0415 \u041f\u041b\u0415\u041c\u0415\u041d\u0410 \u042e\u0416\u041d\u041e\u0419 \u0421\u0418\u0411\u0418\u0420\u0418, \u0426\u0415\u041d\u0422\u0420\u0410\u041b\u042c\u041d\u041e\u0419 \u0410\u0417\u0418\u0418 \u0418 \u041f\u0420\u0418\u0411\u0410\u0419\u041a\u0410\u041b\u042c\u042f \\n\u0412 \u042d\u0422\u041d\u041e\u0413\u0415\u041d\u0415\u0417\u0415 \u042f\u041a\u0423\u0422\u041e\u0412.\\n\u0421\u041b\u041e\u0416\u0415\u041d\u0418\u0415 \u041e\u0421\u041d\u041e\u0412 \u0414\u0420\u0415\u0412\u041d\u0415\u042f\u041a\u0423\u0422\u0421\u041a\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u042b\",\"href\":\"#pf1c\",\"children\":null},{\"text\":\" \u0413\u043b\u0430\u0432\u0430 \u0442\u0440\u0435\u0442\u044c\u044f. \u0418\u0421\u0422\u041e\u0420\u0418\u041a\u041e-\u041a\u0423\u041b\u042c\u0422\u0423\u0420\u041d\u042b\u0415 \u0421\u0412\u042f\u0417\u0418 \u042f\u041a\u0423\u0422\u041e\u0412 \u0421 \u0421\u041e\u0412\u0420\u0415\u041c\u0415\u041d\u041d\u042b\u041c\u0418 \u0422\u042e\u0420\u041a\u041e\u042f\u0417\u042b\u0427\u041d\u042b\u041c\u0418 \u041d\u0410\u0420\u041e\u0414\u0410\u041c\u0418 \u042e\u0416\u041d\u041e\u0419 \u0421\u0418\u0411\u0418\u0420\u0418 \u0418 \u0411\u0423\u0420\u042f\u0422\u0410\u041c\u0418\",\"href\":\"#pf30\",\"children\":null},{\"text\":\"\u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043d\u043e\u0433\u0435\u043d\u0435\u0437\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b \u043d\u0430\u0440\u043e\u0434\u0430 \u0441\u0430\u0445\u0430 \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u041b\u0435\u043d\u0435\",\"href\":\"#pf5b\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u043f\u0435\u0440\u0432\u0430\u044f. \u0410\u0420\u0425\u0415\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u041f\u0410\u041c\u042f\u0422\u041d\u0418\u041a\u0418 \u0426\u0415\u041d\u0422\u0420\u0410\u041b\u042c\u041d\u041e\u0419 \u042f\u041a\u0423\u0422\u0418\u0418 \u0421\u0420\u0415\u0414\u041d\u0415\u0412\u0415\u041a\u041e\u0412\u042c\u042f, \u0421\u0412\u042f\u0417\u0410\u041d\u041d\u042b\u0415 \u0421 \u041f\u0420\u041e\u0418\u0421\u0425\u041e\u0416\u0414\u0415\u041d\u0418\u0415\u041c \u042f\u041a\u0423\u0422\u041e\u0412 (\u0420\u0423\u0411\u0415\u0416 XIII-XIV -  XVI \u0432\u0432.)\",\"href\":\"#pf5c\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0432\u0442\u043e\u0440\u0430\u044f. \\n\u0410\u0420\u0425\u0415\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u041f\u0410\u041c\u042f\u0422\u041d\u0418\u041a\u0418 \u042f\u041a\u0423\u0422\u0418\u0418 XVI-XVIII \u0432\u0432. \u0418 \u0417\u0410\u0412\u0415\u0420\u0428\u0415\u041d\u0418\u0415 \u0424\u041e\u0420\u041c\u0418\u0420\u041e\u0412\u0410\u041d\u0418\u042f \u0422\u0420\u0410\u0414\u0418\u0426\u0418\u041e\u041d\u041d\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u042b \u041d\u0410\u0420\u041e\u0414\u0410 \u0421\u0410\u0425\u0410\",\"href\":\"#pf6a\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0442\u0440\u0435\u0442\u044c\u044f. \\n\u0421\u041e\u041e\u0422\u041d\u041e\u0428\u0415\u041d\u0418\u0415 \u041f\u0420\u0418\u0428\u041b\u042b\u0425 \u0418 \u0410\u0411\u041e\u0420\u0418\u0413\u0415\u041d\u041d\u042b\u0425 \u042d\u041b\u0415\u041c\u0415\u041d\u0422\u041e\u0412 \u0412 \u0422\u0420\u0410\u0414\u0418\u0426\u0418\u041e\u041d\u041d\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u0415 \u042f\u041a\u0423\u0422\u041e\u0412\",\"href\":\"#pf7b\",\"children\":null},{\"text\":\"\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430\",\"href\":\"#pf8e\",\"children\":null},{\"text\":\"\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\",\"href\":\"#pf91\",\"children\":null}]",
                "is_on_shelf": true,
                "bookmarks": [],
                "search_index_url": "https:\/\/e.nlrs.ru\/get-online2-search-index\/14137\/full",
                "text_by_pages_url": "https:\/\/e.nlrs.ru\/get-online2-text-by-pages\/14137\/full",
                "last_read_page": 8,
                "__typename": "Book"
            },
            "me": {
                "uid": "163217",
                "__typename": "User"
            }
        }
    }

    Слать нужно на https://e.nlrs.ru/graphql
    Ответ написан
    Комментировать
  • Почему 0.35 -> toFixed(1) = 0.3?

    Это виноват IEEE754
    Ответ написан
    Комментировать
  • Как называется такой паттерн обработки исключений?

    Никакого названия у такого паттерна нет.

    В целом это то, как обычно идёт обработка исключений в C# и Java.
    Ответ написан
    4 комментария
  • Iframe или js API что предпочтительней?

    Лучшая практика - иметь оба варианта.
    Тем клиентам, которым надо "по проще" - будут использовать iframe.
    Кому нужна кастомизация - будут использовать API
    Ответ написан
    Комментировать
  • Почему разработчики JavaScript не сделают этот язык типизированным как TypeScript?


    Почему разработчики JavaScript не сделают этот язык тизипрованным как TypeScript.

    Потому что это потенциально ломающее изменение.

    Но вообще уже есть пропозал с добавлением опциональной статической типизации, как у TS, но при помощи комментариев (чтобы не ломать те реализации, в которых ещё нет такой опции).

    На счёт худшести системы типов у js можно много спорить, но пользу динамическая типизация тоже даёт.
    Например у тебя не болит голова от отсутствия строгих контрактов с бэкендом.
    Ответ написан
  • Key выдает is not defined. И я не могу понять почему?

    Просто убери key =, чтобы получилось
    createTodoApp(document.querySelector('#res'), 'Список дел', 'key')

    А чтобы в другом месте его вытащить из localStorage - его сначала надо туда положить, а при вытаскивании - убедиться, что он действительно там есть
    Ответ написан
  • Как писать backend сайта без шаблонов?

    Ну прям в фундаменте у asp net core лежит веб-сервер Kestrel, но напрямую с ним никто не работает.
    Если убрать контроллеры, MVC, Razor, то остаётся minimal api: https://docs.microsoft.com/en-us/aspnet/core/funda...
    Ответ написан
    1 комментарий
  • Несколько условий в if?

    Несколько условий в if можно запихнуть при помощи операторов && и ||
    Например
    (!validateLat(phone)) && (phone.length < 6)
    Ответ написан
    Комментировать
  • Как реализовать любой алгоритм на JS без привязки к веб-странице?

    Попробуй nodejs - сможешь как с питоном просто в консоли запускать и получать результат
    Ответ написан
    2 комментария
  • Как получить из массива элементы, которые удовлетворяют некоторому условию?

    Используй функцию filter
    data.filter(it => it.role === "student")
    Ответ написан
    Комментировать
  • Надо ли знать C# разработчику javascript?

    Вроде недавно несколько раз задавали такой вопрос.

    Если будешь делать фронтенд, то js тебе понадобится в любом случае.

    Сам по себе в чистом виде асп нет к фронтенду отношения не имеет, но у него есть расширения в виде Blazor и MVC, которые как раз отвечают за фронт.

    ИМХО: тут идеально подходит поговорка "волков бояться - в лес не ходить".
    Сейчас практически все продукты так или иначе связаны с интернетом, а значит с сайтами и js.

    Сам по себе JavaScript очень простой язык и его бояться не следует, особенно если говорить про TypeScript.

    Если вот принципиально не хочешь писать на js, а хочешь писать только на C#, то обрати внимание на геймдев с Unity и десктопную/мобильную разработку с WPF, Winforms, Xamarin, MAUI, UNO, Avalonia
    Ответ написан
    4 комментария
  • Могу задать несколько вопросов по технологии отправки/получения информации с сервера (fetch)?

    Нет, не можешь.

    https://qna.habr.com/help/rules

    3. В процессе создания вопроса пользователь Сервиса обязан:
    3.7. Не размещать несколько разнородных вопросов в рамках одного вопроса. Наличие дополнительных вопросов в описании вопроса допускается лишь в том случае, если ответы на эти вопросы непосредственно взаимосвязаны друг с другом и могут рассматриваться как подвопросы одного сложносочиненного вопроса.

    На все вопросы можно ответить "RTFM", приложив две ссылки:
    https://developer.mozilla.org/ru/docs/Web/API/Fetc...
    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    И твой вопрос лучше было бы задавать в виде кода, ибо:
    // 1 fetch возвращает промис, который представляет ответ от сервера
    const promiseWithResponse = fetch("https://example.com");
    // 2 response.json() возвращает промис, который представляет спарсеный json
    const promiseWithJson = promiseWithResponse.then(response => response.json());
    // 3. console.log возвращает undefined и логирует переданный объект
    const emptyPromise = responseWithJson.then(json => console.log(json));


    1) Почему здесь не играет роли - возвращать console.log(json) или нет. Ведь и в том и другом случае нам вернётся чистый нужный нам объект с нужной нам информацией.

    Хз как у тебя так получилось. console.log возвращает Undefined, а по тому после него ничего в промисе не будет.
    Дай пример своего кода.
    При использовании, fetch автоматически создаёт промис. Но как он это делает? Вот так?
    const fetch = new Promise("")
    Или он работает как-то по-другому?

    Ну там где-то внутри fetch создаётся Promise и возвращается. Как именно - фиг знает. Это может быть и на плюсах реализовано, в теории.

    Говорится, что метод .json() позволяет конвертировать промис в JSON-формат. Но я не вижу разницы между тем, чтобы просто вызвать fetch и аргументом передать ссылку, и тем, чтобы вызвать fetch и аргументом передать ссылку, вызвать метод then и передать в качестве аргумента колбэк-функцию, а в ней написать response.json() и вернуть это, вызвать ещё метод then и там написать console.log(json). Потому что и там и там все во вполне понятном и читабельном формате объекта.


    Это тебе так только кажется из-за того что ты все свои варианты в developer console проверяешь.
    И .json не сам промис преобразует, а тело ответа.
    Ответ написан
    4 комментария
  • Что эффективнее использовать css || js?

    Эммм, а как ты себе это представляешь без одного из двух?
    CSS - про стили.
    JS - про поведение.
    Ответ написан
  • Как эта IDE отправляет файл по USB на МК?

    Через bluetooth или serial - у браузера есть соответствующие API, чтобы запросить у пользователя доступ к внешним устройствам.
    https://developer.mozilla.org/en-US/docs/Web/API/W...
    https://developer.mozilla.org/en-US/docs/Web/API/W...
    Ответ написан
  • Как сделать, чтобы музыка не сбрасывалась при перезагрузке/переходе страниц?

    Сделать сайт как одностраничное приложение.
    Чтобы не происходило перезагрузок при переходе между страницами.
    Ответ написан
  • Почему я получаю Uncaught ReferenceError?

    jQuery работает корректно
    $number = $(this).attr('numberlist'); // либо тут убери доллар у number
    alert(number); // либо тут добавь, чтобы получилось $number
    Ответ написан
    Комментировать
  • Сумма - % или Сумма + % = Число. Как правильно записать?

    Как правильно записать?

    const value = 100;
    const tenPercents = 10 / 100;
    const tenPercentsFromValue = tenPercents * value;
    const valuePlusTenPercents = tenPercentsFromValue + value;
    Ответ написан
    Комментировать