• Как правильно исправить ошибку с Unexpected token F in JSON?

    Aetae
    @Aetae
    Тлен
    С сервера по адресу dle_root + "engine/ajax/field_search.php" в ответ приходит вместо JSON какой-то текст начинающийся на букву "F".
    Открой инструменты разработчика(F12), вкладку Сеть(Network) и посмотри что именно.
    Ответ написан
    1 комментарий
  • Порядок выполнения действий в выражении --i + i++?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    --i + i++ - это не атомарное выражение. Это (--i) + (i++) - как раз потому что приоритеты инкремента выше приоритетов сложения. Javascript не вычисляет ничего разом, он вычисляет всё пошагово слева направо. Приоритетность разбивается на токены не снизу вверх, а сверху-вниз. Если два подвыражения с более высоким приоритетом оказались после разбивки слева и справа, то левый выполняется первым, правый вторым, т.к. для выражения с низким приоритетом не важно насколько приоритет подвыражений выше - для него они равноправны.
    Никакого UB в отличие от С тут быть не может.
    Ответ написан
    4 комментария
  • Для чего при сортировке нужно учесть именно 0.5?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Не используйте это для шафла в продакшене вообще.
    1. Результат зависит от внутренней реализации сортировки в браузере и может быть совершенно не рандомным.
    2. Сортировка имеет гораздо большую сложность чем необходима для шафла.

    Используйте любой специальный алгоритм, например.
    Ответ написан
    Комментировать
  • Как остановить определенный скрипт?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если скрипты чужие - никак. Вы можете остановить все наличные интервалы и таймауты разом, но не запустить их обратно.
    Если скрипты ваши - предусмотрите это архитектурно и сделайте api для этого.
    Ответ написан
  • Как вывести содержимое атрибута title в css селекторе?

    Aetae
    @Aetae
    Тлен
    Чё те надо не понятно, но текстом title является в любом случае, как и любой другой атрибут, чисто по определению.
    По самому вопросу могу предположить только два варианта:
    span[title="21 093"]:after {
      content: attr(title)
    }
    но тогда при чём тут python?..
    Ответ написан
  • Integer в JavaScript?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Вся чувствительная математика в любом случае должна быть (продублирована) на сервере, а клиент и так обойдётся.
    Если прям нужно, то можно использовать math.js или любую иную подобную либу. Либо вручную нафигачить нужные вычисления с помощью BigInt и\или TypedArray.
    Ответ написан
    2 комментария
  • Как дождаться загрузки всех дочерних Vue-компонентов?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    На самом деле все компоненты подключены, когда сработал родительский mounted. Если что-то не отображается - вопрос исключительно во внутренней логике ваших компонентов-детей, а значит и решение не универсально, а зависит от этой логики.
    Ответ написан
  • Как правильно собрать библиотеку NPM из ES6 классов?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Может быть там вообще не использовать ни Вебпак ни Бабель

    Да, это современное решение для модулей.)
    В package.json для точку входа указать не main, а module и дело с концом.
    Хотя вебпак много чего полезного ещё может делать, а вот бабель для библиотеки-модуля - лишнее.
    Но а родительский проект тогда поймет, что этот импорт нужно будет дополнительно транспилировать? В нем то бабель используется...

    Как настроишь бабель-лоадер в проекте, так и будет транспилировать. По умолчанию он транспилирует всё, и надо специально указывать exclude, чтоб не лез в node_modules.
    Если пользуетесь какими-то cli - для этого есть специальные настройки(transpileDependencies).
    Ответ написан
    Комментировать
  • Почему куки приходят с сервера, но не сохраняются в браузере?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    1. У тебя вообще запрос не проходит, cors не полностью настроен на сервере.
    2. Даже если будет настроен - кука поставится для сервера, а не для клиента, т.к. адреса разные.
    3. Если в проде домен бэка и фронта будет един, то просто используй proxy встроенный в devServer.
    Ответ написан
    Комментировать
  • Как правильно кодировать URl для сохранения файла в window-1251?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Сам по себе браузер не предоставляет средств для кодирования в какую-либо кодировку кроме utf-8 (хотя под капотом всё это, само собой, есть и в определённый момент такой функционал мог бы появиться, но был выпилен из стандарта, чтоб этим нацистам икалось).
    Тебе надо найти любую функцию "utf-8 to win1251" и кодировать текст вручную перед тем как класть в строку.
    Ответ написан
    Комментировать
  • Как в JS переписать метод так чтоб он вызывался с еще одним аргументом по дефолту?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    1. Ты уверен что хочешь замонкипатчить весь класс и всех потомков, а не конкретный его инстанс?
    2. У тебя ряд никак не связанных с ts ошибок, эта строчка: this.showParams.apply(this, ...args); содержит две ошибки:
    а) вызывая this.showParams внутри this.showParams ты поучаешь бесконечную рекурсию, надо сохранить старый this.showParams в отдельную переменную и вызывать через неё;
    б.) Function.prototype.apply принимает вторым аргументом массив, а ты его тут зазря разбираешь.

    Если на 1 вопрос ответ "нет", то как-то так должно быть:
    class ExampleClass {
      showParams(...args) {
        console.log('I have to be calleb');
        console.log(...args);
      }
    }
    
    const exampleInstance = new ExampleClass();
    
    exampleInstance.showParams('one', 'Two', 'Three', 456);
    
    exampleInstance.showParams = (showParamsOld => function(...args){
      args.push('Default Argument');
      return showParamsOld.apply(this, args); 
    })(exampleInstance.showParams);
    
    exampleInstance.showParams('one', 'Two', 'Three', 456);
    Если ответ "да", то поправь сам.

    Только помни, что монки-патчинг это плохо, и к нему стоит прибегать только в крайних случаях.
    Ответ написан
    3 комментария
  • TypeScript. Как собрать объект из массива строк?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    На самом деле чтоб была полноценная типизация надо как-то так:
    getStyles<T extends keyof CSSStyleDeclaration>(styles: readonly T[]) {
      return styles.reduce((res, style) => {
        res[style] = this.$nativeElement.style[style];
        return res;
      }, {} as Pick<CSSStyleDeclaration, T>);
    }

    Песочница.

    Разница с решением от Дмитрий в том, что тип получившегося объекта будет содержать только полученные ключи, а не все возможные в CSSStyleDeclaration.
    Ответ написан
    2 комментария
  • Как добавить массив в data атрибут во vue js шаблоне?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    JSON.stringify(item.SIZES)
    Только так делать не надо. Вам не нужен массив в data. Всё что вы делаете с этим массивом - вы должны делать прямо с ним в пределах vue.
    Ответ написан
    Комментировать
  • Почему разная структура проекта при разной установке Vue и библиотек?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В node_modules лежат собранные готовые пакеты, вам туда лезть не надо.

    Структура проекта, создаваемая vue-cli соответствует (очевидно) выбранным опциям.
    Но эта структура - не что-то сакральное единственно верное. Всё что создал vue-cli вы можете создать вручную. Или создать совершенно другую структуру. Важна лишь логика в коде, папочки не важны.

    Так что устанавливая какие-то пакеты вручную вы делаете именно это: устанавливаете пакеты. Т.е. (утрируя) просто кладёте их в node_modules и прописываете их наличие в package.json.
    Это никак не влияет на ваш код. Если вы хотите их использовать в коде - вы должны использовать их в коде. Создавать отдельные файлы и папки, или просто подключать в уже имеющихся - ваше дело.
    vue-cli делает это за вас, при выборе опций, но это особенность vue-cli, а не неотъемлемое свойство npm пакетов.
    Ответ написан
  • Стоит ли изучать pug?

    Aetae
    @Aetae
    Тлен
    Там нечего толком изучать. Всё интуитивно понятно, разок доку прочитать достаточно.
    А вот стоит ли использовать при наличии современных фреймворков(или совместно с ними) - это уже отдельный вопрос.
    Ответ написан
    1 комментарий
  • Как динамически менять ширину и высоту контейнера в зависимости от контента с сохранением пропорций?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    К сожалению css\html так устроен, что только одно измерение динамически может зависеть от другого, так что это невозможно без скриптов.
    Ответ написан
    Комментировать
  • Почему он так делает?

    Aetae
    @Aetae
    Тлен
    Если про формат переносов:
    Settings - Editor - Code Style - HTML - Other > Aligin attributes

    Если про то что автоматически переносит, то либо глобально увеличить количество символов в строке
    Settings - Editor - Code Style > Hard wrap at: <число символов>
    либо запретить переносить конкретно html атрибуты:
    Settings - Editor - Code Style - HTML - Other > Wrap attributes: Do not wrap


    В любом случае не рекомендовал бы менять никаких из этих настроек, так как они действительно способствуют удобству чтения и написания кода.
    Ответ написан
    1 комментарий
  • Подменить "visible" на странице, возможно?

    Aetae
    @Aetae
    Тлен
    Какие проблемы?
    Object.defineProperty(document, 'visibilityState', {
      value: 'visible'
    })
    Что-то конечно может сломаться на странице, но вас же это не волнует?)
    Ответ написан
    1 комментарий
  • Как правильно трансформировать время?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Z на конце - это отсутствие часового пояса, что трактуется по стандарту UTC - всемирному координированному времени.
    По умолчанию же new Date() задаёт дату в часовом поясе системы. (у вас +3 - скорее всего MSK).
    Если нужно время именно в UTC - поменяйте:
    var newDate = new Date(yyyy, mm, dd, h, m, s);
    на:
    var newDate = new Date(Date.UTC(yyyy, mm, dd, h, m, s));

    Но скорее всего это вам не нужно.
    Ответ написан
    Комментировать
  • Почему код работает неверно?

    Aetae
    @Aetae
    Тлен
    Ну потому что результат парсинга строки - строка. Приводи к числу явно.
    И таки да, срань. Уважай свой код, чувак, даже если пишешь заведомое говно.
    Ответ написан