Задать вопрос
  • Как выполнить действие до события DomContentLoaded?

    Aetae
    @Aetae Куратор тега Vue.js
    evomed, ты всё в кучу собрал.
    При spa без ssr domcontentloaded срабатывает один раз при загрузке страници до загрузки любого vue. Срабатывает он на по сути пустой странице. Любые переходы внутри spa ни на что более не влияют, это просто виртуальное изменение картинки через js.
    Однако бот обычно не ходит внутри spa, а таки всё равно загружает каждую страницу заново.
    Соответственно, насколько я понял механизм, тебе надо разместить первую часть кода в шаблоне в head, поифиг php там или ещё что, а isLoaded ставить после того как вся мета для конкретной страницы точно установлена, а не по рандомному тайм-ауту. Хз как она ставится в твоей хрени, сам поищи или проверь: может после роутера afterEach ижможет просто в mounted, может понадобится nextTick. Ты главное там где собираешься писать isLoaeed тупо через console.log querySelector проверь что там нужная инфа точно уже есть.

    P.S. Я не слишком уверен что такой подход вообще рабочий, лучше бы тебе нагуглить мануал какой свежий на на тему "spa yandex сео 2024" и следовать ему.:)
    Написано
  • Как имитировать клик по элементу video?

    Aetae
    @Aetae Куратор тега JavaScript
    Alex_8x, если оно открывается по клику - по тому клику и запускайте. Никаких таймаутов. Тогда это считается действием пользователя и заработает. Само собой это если попап на той же странице, если открывается новая вкладка, то не судьба.
    Написано
  • Зависает на запросах после сборки через webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Роман Жарков, хм, по идее он никак не может повлиять на нативные имена функций, в т.ч. и AbortSignal.
    Могу предположить, что в коде зачем-то используется полифил вместо нативного(доступного с 15 ноды), тогда проще было бы выкинуть оный.
    Написано
  • Почему метод pop удаляет не все елементы массива?

    Aetae
    @Aetae Куратор тега JavaScript
    Ну не то чтобы нельзя: можно и в некоторых случаях нужно. Просто надо понимать что ты делаешь.:)
    Написано
  • Как Вернуть промис без прописывания .then каждый раз?

    Aetae
    @Aetae Куратор тега JavaScript
    Ну собсно в твоём вопросе ответ: ты разве не видишь разницы сам?
    spoiler
    Ключевое слово await.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Виталий Першин, я в самом начале написал откуда этот эффект и почему. Также как я в самом начале написал, что скейлить - вообще не вариант.
    Иными словами: иди лесом да по кочкам. Отвечать тебе больше смысла не вижу.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Виталий Першин, это только один текст в одним div. А теперь посмотри на картинку автора запроса. Всё это надо относительно разметить и всё равно не факт, что не поедет.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Виталий Першин, а у меня не одинаково в хроме и фф, чудеса:671d83b011595847577904.gif
    Написано
  • Как настроить Nginx на отдачу файла main.js Angular SPA на микрофронтенде?

    Aetae
    @Aetae
    Во-первых: индекс то открывается по пути superclusterdeploynamespace.supercountry/build-frontend/ ?
    Если нет, то у тебя вообще деплой не настроен. Тут сам смотри.
    Если открывается - а есть ли у тебя файл main.js рядом с index.html в папке dist после билда? Если нет, то откуда он там возьмётся после деплоя? Смотри где он есть и перекладывай\изменяй путь.
    Написано
  • Будет ли PyCharm работать быстрее под *nix, чем под Windows?

    Aetae
    @Aetae
    Единственный адекватный вариант - добавить памяти. Всё остальное - страдания ради страданий. Сейчас память стоит копейки, нет ни единой причины заниматься мазахизмом.
    Да, если кастрировать винду или поставить линпух, отключить плагины, оттюнить jvm и т.д., то что-то выиграть можно. Но до комфортного уровня? Сомневаюсь.
    Написано
  • Как заменить $('#more').ready(function() { на чистом js?

    Aetae
    @Aetae Куратор тега JavaScript
    Михаил, ну как-то так:
    function waitSelector(selector, root = document) {
      const node = root.querySelector(selector);
      if (node) return Promise.resolve(node);
    
      return new Promise(resolve => {
        new MutationObserver((_, observer) => {
          const node = root.querySelector(selector);
          if (node) {
            observer.disconnect();
            resolve(node);
          }
        }).observe(root, { childList: true, subtree: true });
      })
    }
    
    let el = await waitSelector('#id');
    Но это не для прода, разве что в юзерскриптах имеет смысл.

    В реальном коде ты сам должен знать когда и где ты добавляешь тот или иной элемент с id или классом и именно там дорабатывать код, а не патчить его снаружи. Использование же такой фигни приведёт к неподдерживаемому коду, где непонятно откуда что берётся и почему меняется.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Виталий Першин, видишь 1х 0.5х 0.25х внизу пена? Потыкай и сравни разницу в моём примере и в твоём. И разница может быть ещё больше, в зависимости от шрифта и вёрстки.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Виталий Першин, во-первых: не "гарантировано вписать в высоту", а "гарантировано 1:1 вписать". Т.е. идеально, как будто это просто картинка.
    Даже если ты идеально подгонишь все размеры относительно(задолбаешься) - разные размеры шрифта могут иметь специально разные начертания(для читаемости), плюс сам "размер шрифта" - параметр, увы, весьма условный, плюс всякие округления браузера... Так что прям 1:1 получится очень вряд-ли.
    Во-вторых: я пометил ниже, что это вредный совет, т.е. скорее как забавная штука, которая может помочь в очень специфических случаях(иначе бы я это в Ответы писал). Мои основные мысли во второй части коммента.
    Написано
  • Передать событие прокрутки в iFrame с PDF? Или защитить PDF от сохранения?

    Aetae
    @Aetae Куратор тега JavaScript
    Qoragar, пропустить все события мыши через элемент - можно с помощью pointer-events: none. Всё остальное надо просто отключить в самом pdf.js.
    Написано
  • Что не работает?

    Aetae
    @Aetae
    BigKick01, или если совсем асоциал - взять затычку на авито за 500р.:)
    Написано
  • Передать событие прокрутки в iFrame с PDF? Или защитить PDF от сохранения?

    Aetae
    @Aetae Куратор тега JavaScript
    Взять библиотеку pdf.js, поотключать в ней лишние функции.
    С фреймами каши особо не сваришь.
    Написано
  • Как сделать пропорциональное масшабирование блока?

    Aetae
    @Aetae
    Если надо масштабировать прям гарантировано 1:1 вписывая в высоту, то тут поможет только transform: scale + javascript:
    Но это "вредные советы".:)

    Ты уверен что хочешь ломать глаза людям с маленьким монитором? Может лучше предусмотреть разбивку на две колонки если не вписывается?
    Написано
  • Почему не удается сбилдить nuxt на node.js?

    Aetae
    @Aetae
    Поясню вышестоящий коммент: у разраба пакет nuxt может стоять глобально, и он не добавил его в список зависимостей. Если так - плохо, потому что хз какая версия, не факт что угадаешь(ну либо спросить у разраба если доступен).
    Написано
  • Как правильно сделать привязку данных к динамически созданному элементу в Vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Онотолий, как сказал Wispik (а так же как я упомянул в вопросе) - используй v-for:
    <script>
    export default {
      data() {
        return {
          messages: [],
          id: 0
        }
      },
      methods: {
        getId() {
          return this.id++;
        },
        _jjj(){
          this.messages.push({
            id: this.getId(),
            data: 'hk',
            text: 'jjj!!!!'
          });
        },
       _kkk(){
          this.messages.push({
            id: this.getId(),
            data: 'ooooooooooo',
            text: 'ha-ha-haaaa!!!'
          });
        }
      }
    }
    </script>
    
    <template>
      <div v-for="{data, text, id} in messages" :key="id">
        <b :data="data">{{text}}</b>
      </div>
      <button @click="_jjj">11</button>
      <button @click="_kkk">12</button>
    </template>


    В vue ты работаешь с данными: если это сообщения чата - ты работаешь с сообщениями чата. А шаблон просто автоматически сам рисуется в зависимости от данных. Тебе только надо один раз задать этот шаблон, а дальше ты можешь просто забыть о вёрске. Разделение кода и представления.
    Написано
  • Как обойти проблему перегруза DOM?

    Aetae
    @Aetae Куратор тега JavaScript
    Ну в принципе это и есть единственный вариант. Ну кроме как поставить фоном видео.:)

    Тормозит оно из-за сочетаний анимаций. Думаю если при развороте блока заранее ставить финальную высоту контейнеру с градиентом, то работать будет куда лучше.:)
    Написано