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

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Раз работает на 2х, значит в теории самый простой вариант:
    f12 - консоль
    document.querySelectorAll('video').forEach(video => video.playbackRate = 100500);
    Ответ написан
    Комментировать
  • MIME тип CSS при попытке добавить stylesheet в head через скрипт. Как решить проблему?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    А почитать что тебе пишет, а посмотреть что ты пишешь?=\

    Refused to apply style from 'https://localhost:3000/css/desctop/main_d.css.css%22%3E' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.Understand this errorAI

    'https://localhost:3000/css/desctop/main_d.css.css%22%3E'

    main_d.css.css%22%3E


    res.send(`https://localhost:3000/css/desctop/${base}">`)
    `https://localhost:3000/css/desctop/${base}">`
    ${base}">
    ">


    У тебя в ссылке лишний "> из-за чего ссылка ведёт никуда, из-за чего сервер возвращает 404 страницу, которая html.
    Ответ написан
  • Ошибка с Babel при сборке Webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Все пакеты связанные с babel обновил до последних версий

    А не надо было. Работает - не трогай.:)

    babel-core - старая версия семилетней давности, новая живёт тут: @babel/core.

    Когда ты обновил всё до последней - что-то осталось старое, что-то работает со свежим, и так просто хрен разберёшь. Верни как было и живи спокойно.
    Или же найди свежий нулевой пресет и перекинь проект на него, если так сильно хочется обновиться. Вручную же версиями библиотек жонглировать можно долго.
    Ответ написан
    3 комментария
  • В чём ошибка js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Ни в чём. Ошибка у тебя скорее всего в html, который ты не привёл.
    // разве что чтоб шаблоны в строках работали надо использовать ` а не ".
    Ответ написан
    4 комментария
  • Как изменить переменную (массив) из другого модуля в javascript?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Это так и работает. Массив передаётся по ссылке. Задача решена.

    P.S. Проблемы тут могут возникнуть только при работе с многопоточностью в node, где в каждом потоке своя версия модуля, либо в случае если в дереве зависимостей окажется несколько разных версий. Но это отдельные случаи и задачи.
    Ответ написан
    Комментировать
  • Зависает на запросах после сборки через webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Возможно дело в том что не вынесены node модули как внешние:
    const nodeExternals = require('webpack-node-externals');
    {
      // ...
      externals: [nodeExternals()],
    }


    Если это не поможжет, то отключи все плагины и оптимизацию.
    Не заработало?
    Сделай тестовый файлик с одним единственным методом, собери и посмотри на результирующий код - подебаж его руками и разберись в чём дело.

    Работает?
    Подключай плагины по одному пока не найдёшь виновника и разбирайся с конфигом оного.
    Ответ написан
  • Как остановить выполнение функции при нажатии на input?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    var timeoutId;
    // ...
    timeoutId = setTimeout(...
    // ...
    timeoutId = setTimeout(...
    // ...
    function stop() {
      clearTimeout(timeoutId);
    }
    document.getElementById("placeholder_text").click = stop;


    Ну и не называй функцию do, есть ключевое слово do ... while.
    Ответ написан
    Комментировать
  • Как вырезать в path прозрачное отверстие при помощи того же path?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Просто закрываешь один path и рисуешь дырку в продолжение.
    Примерно так:


    На canvas это можно сделать с помощью параметра fill evenodd:
    Ответ написан
    5 комментариев
  • Почему приложение не билдится из-за vue-yandex-maps?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Я, как и сборщик, не вижу экспорта yandexMap и yandexMarker, вижу YandexMap и YandexMarker.
    Ответ написан
    2 комментария
  • Как изменить скрипт сайта через js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если вопрос на самом деле: "Почему из расширения не доступны глобальные переменные и функции?", то ответ - потому что расширения работают через слой безопасности, чтобы тебя случайно не взломали через твоё расширение.

    Как добраться до глобальных переменных через этот слой - зависит от конкретного браузера. Читай документацию.

    Универсальный подход(при отсутствии CSP) - просто добавить на страницу script с нужным содержимым. Примерно так:
    function runInScript() {
      // здесь везь код, независимый от иных функций
      document.loremipsum()
    }
    
    
    
    document.head.append(
      Object.assign(
        document.createElement('script'),
        {
          innerHTML: `(${runInScript.toString()})()`,
          onload() { this.remove() }
        }
      )
    );
    Ответ написан
    Комментировать
  • Как избежать скачков header с использование scroll и transform?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если использовать position: sticky в css, который именно для этого и предусмотрен, нельзя, то сделай так чтоб было можно. Потому что это единственный реально адекватный вариант, а какие-то там проблемы с твоим overflow - это твой косяк, который и надо решать.

    С программным изменением позиции оно всегда будет "дёргаться" без вариантов. До того как появилось sticky - это решали хитрой вёрсткой, где "на самом деле" никакая позиция не меняется, а fixed(а ещё раньше absolute) дубликат элемента показывали\скрывали по условию.

    P.S. Возможно можно что-то плавное изобразить при помощи requestAnimationFrame и getBoundingClientRect, не привязываясь к событию scroll, но не пробовал ибо не нужно.
    Ответ написан
  • Как проксировать запросы к API?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    При использовании postman ничего проксировать не надо, он делает запросы без ограничений. Т.о. ошибки у вас возникают не по этой причине, а из-за кривых запросов и\или кривого сервера. Пытайтесь дальше.

    P.S. Ограничения есть в браузере, если вы будете писать клиентское приложение то изучить, что такое CORS вам придётся в любом случае.
    Ответ написан
    Комментировать
  • Как убрать ненужную всплывающюю подсказку?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Поставь <form> атрибут novalidate чтоб не вылезали стандартные подсказки браузера.
    Ответ написан
  • Как с помощью JS организовать запись и чтение данных?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    GM_setValue GM_getValue - будут храниться в сторе самого расширения.

    Всякие куки, localStorage, indexedDb - всё может почитститься самом сайтом или случайно тобой.

    Надёжнее - только свой сервак завести и к нему запросами отправлять-получать.:)
    Ответ написан
    Комментировать
  • Как добиться видимости переменной JavaScript в событии тега button?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Именно в таком виде код в обычном html будет работать прекрасно. Ищи проблему в ином месте.
    // поставил true чтоб собственно вызов происходил.
    Ответ написан
    Комментировать
  • Как красиво использовать динамически подгружаемый API?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Вот те простой хэлпер для ленивой загрузки одной функции:
    function lazyAsync(lib) {
      let promise;
      return async function (...args) {
        promise ??= lib();
    
        return (await promise).call(this, ...args);
      };
    }
    
    const doSomething = lazyAsync(async () => {
      // тут загружаем
      const doSomething = await loadLib('doSomething');
    
      // тут что-то делаем с загруженным
    
      // тут возвращаем конечную функцию
      return data => {
        // тут делаем с аргументами
        return doSomething.process(imgData);
      };
    });
    
    // если сразу загружается нужная функция - можно не усложнять
    const doSomething = lazyAsync(loadDoSomethingProcess);
    
    await doSomething(1);
    await doSomething(2);
    await doSomething(3);
    Ответ написан
    Комментировать
  • Как вложить span в textarea?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Никак.
    Textarea - зона текста, там может быть только текст.
    Если хотите большего - есть только три варианта, два - геморройные, с кучей коссбраузерных несовместимостей и особенностей, которые обязательно заставят вас рвать волосы на заднице:
    1. Отказаться от textarea и использовать contentEditable div.
    2. Подкладывать под(или поверх с pointer-events:none) div, который копирует содержимое textarea 1:1 со всеми стилями и отступами и раскрашивает его как надо.

    ...и третий, рекомендуемый лично мной:
    3. Использовать одну из долгоживущих готовых библиотек, в которых всё давно отладили и предоставили удобные интерфейсы.
    Ответ написан
    3 комментария
  • Как пересобрать массив объектов, выкинув из него лишнее?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Как-то так, если без учёта дубликатов, в один проход.
    function removeSomeShit(arr) {
      const table = {};
      const result = [];
    
      for(const current of arr) {
        const {uid, owner, createdAt} = current;
    
        const uidOvnerKey = `${uid}\0${owner}`;
        const ownerUidKey = `${owner}\0${uid}`;
    
        const matched = table[uidOvnerKey];
    
        if (matched) {
          delete table[uidOvnerKey];
          result.push(matched.createdAt > createdAt ? matched : current);
        } else {
          table[ownerUidKey] = current;
        }
      };
      
      return Object.values(table).concat(result);
    }
    Ответ написан
    1 комментарий
  • Как запретить PopUP окну всплывать?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    window.onload = function() { 
      if(sessionStorage.allow) return;
      popup.style.display = 'block'; 
    } 
    
    allowButton.onclick = function() { 
      popup.style.display = 'none'; 
      sessionStorage.allow = true;
    }
    Ответ написан
  • Как добавлять в билд Vite файл js без type module?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если ты их руками в html вписываешь - там у тебя в корне должна быть папка public(если нет - создай) - туда и клади, он тупо их перекопирует в dist.
    Если же эти скрипты должны работать где-то в рамках других, то пиши где надо import '<script_path>'; (без from и всего такого).
    Ответ написан
    1 комментарий