Задать вопрос
  • Почему переменная класса становится undefined при обращении из метода?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Стрелочная функция не имеет своего this, соответственно возьмет его из скоупа выше:
    MyFunc = (e) => {
      console.log("MyVariable: " + this.MyVariable); // oh yes
    }
    Ответ написан
    Комментировать
  • Как правильно делать фильтр на сайте?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Результат интересует как behance. Когда при выборе категории меняется страница работ, url из "behance.ru" превращается "behance.ru/kate", но визуально нет переадресации на новую страницу.

    Если брать пример с behance.ru, то у них на сайте используется vuejs, который предварительно был отрендерен на сервере.

    Если Вы хотите на обычном js такое реализовать, то Вам необходимо менять url при клике на определенный элемент:
    // listeners
    document.querySelector('.showDivan').addEventListener('click', () => filter('divan'));
    document.querySelector('.showShkaf').addEventListener('click', () => filter('shkaf'));
    document.querySelector('.showAll').addEventListener('click', () => filter('all'));
    
    // filtering
    const filter = category => {
      const items = document.querySelectorAll('.product');
    
      items.forEach(item => {
        item.style.display = category === 'all' || item.classList.contains(category) ? 'block' : 'none';
      });
    
      // change url
      history.pushState({}, '', `/category/${category}`);
    }

    Стоит ли делать на чистом js? Ради фана - можно, в остальных случаях - не рекомендуется, т.к. для этого изобрели тот же самый vuejs/reactjs.
    Ответ написан
    1 комментарий
  • Как сделать проще. компактней код?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Попроще, как заказывали!
    const clickTargetElement = document.querySelector('.hiking__about_item_img');
    
    const imageConfigurations = {
      primaryImage: {
        htmlElement: document.querySelector('.img1'),
        sourcePaths: ['img/about_hiking/1.png', 'img/about_hiking/2.png'],
        altTexts: ['House and mountains in the background', 'Snowy mountains']
      },
      secondaryImage: {
        htmlElement: document.querySelector('.img2'),
        sourcePaths: ['img/about_hiking/1.png', 'img/about_hiking/2.png'],
        altTexts: ['House and mountains in the background', 'Snowy mountains']
      }
    }
    
    const toggleImageAttributes = ({htmlElement, sourcePaths, altTexts}) => {
      const isPrimarySource = htmlElement.getAttribute('src') === sourcePaths[0];
      const indexToUse = isPrimarySource ? 1 : 0;
    
      htmlElement.setAttribute('src', sourcePaths[indexToUse]);
      htmlElement.setAttribute('alt', altTexts[indexToUse]);
    }
    
    clickTargetElement.addEventListener('click', () => {
      Object.values(imageConfigurations).forEach(toggleImageAttributes);
    });
    Ответ написан
    4 комментария
  • Как длительное время распознавать слова в браузере?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    https://developer.mozilla.org/en-US/docs/Web/API/S...
    https://developer.mozilla.org/en-US/docs/Web/API/S...
    Как вариант, слушать события result и end, и перезапускать SpeechRecognition:
    const rec = new SpeechRecognition();
    
    rec.addEventListener('result', () => {
      // code
    });
    
    rec.addEventListener('end', () => recognition.start());
    rec.start();


    как принудительно его включить чтобы не отключался пока страница открыта?

    На данный момент - никак. Поведение может варьироваться в зависимости от браузера и его версии. Рекомендуется руками обрабатывать соответствующие события и перезапускать SpeechRecognition.
    при повторном использовании recognizer.start() - появляется диалоговое окно браузера спрашивающее о микрофоне - как этого избежать?

    Если Вы не отзывали разрешение на странице или в рамках одной сессии браузера, - confirm (окно с запросом разрешения на использование оборудования) не должно появляться. Как избежать? - не запрашивать разрешение.
    можно ли отключить это сообщение?

    Это нативное окно браузера и находится вне контекста скриптов на странице.
    Ответ написан
  • Как удалить просроченные товары в разделе товары в ВК автоматически?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как удалить просроченные товары в разделе товары в ВК автоматически?

    Написать скрипт.
    или на чём он пишется

    На языке программирования. Учитывая, что у Вас в тегах Python - то на Python он так же пишется.
    Ответ написан
  • Как правильно закрыть от индексации URL с GET параметром источника ссылки?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Не индексировать страницы в url которых имеется url параметр param, robotx.txt:
    User-agent: *
    Disallow: /*?param=

    Но лучше использовать канонические адреса, html страницы:
    <link rel="canonical" href="https://www.example.com/statya"/>
    Ответ написан
    1 комментарий
  • Насколько законно для крупной компании пробивать человека по почте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Насколько законно для крупной компании пробивать человека по почте?

    Размер и длина ;) компании не имеют значения. На всех действует 152 ФЗ ("общедоступные персональные данные - персональные данные, доступ неограниченного круга лиц к которым предоставлен с согласия субъекта персональных данных или на которые в соответствии с федеральными законами не распространяется требование соблюдения конфиденциальности").

    Соответственно, в теории можно подать на них в суд за использование ПД, им придется доказать, что Вы давали такое согласие. Однако, на кого Вы будите подавать в суд? Ответчик кто? Вся компания? Конкретный чел? Может, кот пробежал по клаве и взломал пентагон? - экспертизы в студию!

    Я хочу узнать, насколько незаконны их действия?

    Законны, пока не доказано обратное.

    На что они меня пробили, отправили письмо моему начальнику, а сама компания чуть ли не угрожает мне.

    Как мерили уровень "угроз"?
    Нет такой статьи "покушение на угрозу". Это не угроза, пока не доказано обратное.

    Если резюмировать, то овчинка выделки не стоит, с обоих сторон.
    Ответ написан
    Комментировать
  • Как или чем решить новую капчу Yandex SmrtCaptcha?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Существуют ли браузерные расширения для автоматического решения данной капчи?

    Нет, в этом весь смысл капчи.
    Меня эта капча настолько бесит, что я даже готов потратить время и написать свое расширение для обхода, лишь бы было внешнее API для ее решения.

    Пишите - ждать по 20-60 секунд для расшифровки, через специализированные сервисы + это не бесплатно, смысла для личного пользования практически нет.

    alexalexes все правильно написал в комменте.
    Ответ написан
    2 комментария
  • Чем отличается источники трафика в метрике?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    а так же есть еще ya.ru и yandex.ru на которых по одному визиту. Почему они разделились?

    Потому что это разные сайты?
    Ответ написан
  • Как написать скрипт/софт на Python который будет автоматически отвечать на сообщения в телеграмме по шаблону?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как написать скрипт/софт на Python который будет автоматически отвечать на сообщения в телеграмме по шаблону?

    Рекомендую начать с гугла и запроса "python telegram libraries".
    С помощью какого фреймворка вообще пишутся подобные скрипты ?

    python-telegram-bot
    Telethon
    Aiogram
    И возможно ли это реализовать с помощью телеграмм бота написанного на aiogram?

    Возможно.
    Ответ написан
    Комментировать
  • Как отправить запрос с конкретной формы и передать ID или Class формы в PHP-скрипт через ajax-запрос?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как нужно вызывать js-функцию, чтобы она брала данные с той формы которую отправили? И как передать через ajax или ID, или Class формы?

    Модифицировать кнопку форм, чтобы она вызывала событие формы submit:
    <button type="submit" class="button">Отправить</button>

    Создадим один обработчик для всех форм:
    async function sendForm(form) {
      const data = {
        name: form.querySelector("input[name='name']").value,
        email: form.querySelector("input[name='email']").value,
        phone: form.querySelector("input[name='phone']").value,
        message: form.querySelector("textarea[name='message']").value,
        formId: form.id,
        formClass: form.className
      }
    
      try {
        const response = await fetch('php/send.php', {
          method: 'POST',
          headers: {'Content-Type': 'application/json'},
          body: JSON.stringify(data)
        });
    
        if(response.ok) {console.log('Success send form')}
        else console.log('Error send form', response);
      }
    
      catch(error) {console.log('Error: ' + error.message)}
    }

    Вешаем слушателей на submit форм:
    document.querySelector('#form1').addEventListener('submit', (e) => {
      e.preventDefault();
      sendForm(event.target);
    });
    
    document.querySelector('#form2').addEventListener('submit', (e) => {
      e.preventDefault();
      sendForm(event.target);
    });

    В зависимости от формы нужно в PHP-скрипте менять тему письма.

    В php обработчике формы обрабатываем полученные данные от js (php у меня не очень):
    $json = file_get_contents("php://input");
    $data = json_decode($jsonData, true);
    
    // get formId and formClass
    $id = $data['formId'];
    $class = $data['formClass'];
    
    // this change type email message
    Ответ написан
    4 комментария
  • Как зафиксировать ключевые запросы в директ?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Изучаем как работают операторы в Яндексе:

    - "купить машину иркутск":
    -- Фиксированное количество слов.
    -- Порядок слов не фиксирован (купить машину иркутск == иркутск купить машину).
    -- Словоформы разрешены (купить машины иркутске).
    -- Запрещены стоп-слова/служебные части речи (купить машину иркутск != купить машину из иркутска).

    - "купить машину +в иркутск" (оптимально для большинства случаев):
    -- Изменения? Зафиксировали присутствие "в" (стоп-слова/служебные части речи). Все остальное тоже самое - купить машину +в иркутск == купить машины +в иркутске == машины купить +в иркутск == +в машину купить иркутск.

    - "[купить машину в иркутск]":
    -- Закрепление количества, порядка и стоп-слов/служебных частей речи (но лишь в том случае, если точно понимаете, зачем это делать).
    Ответ написан
    Комментировать
  • Где искать JS код если в консоль показывает что он в VM?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    JS из WM - это что то вроде выполнение кода в контексте браузера, но не из js файла при загрузке страницы. Как вариант, где искать: innerHTML, eval, createElement(script).
    Ответ написан
    Комментировать
  • Next JS это только про SSR или на нём приложение ничем не отличается от реакта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Next JS это только про SSR

    Это про любой тип веб-приложения:
    - SSR.
    - SSG.
    - ISR.

    Ну а еще, это фактически единственный инструмент, который может все и сразу под React.

    Next JS это тот же реакт в котором сразу есть все необходимые пакеты для работы с ним или он все же медленней обычного spa приложения на реакте с пакетами?

    - Все инструменты в наличие.
    - Next может экспортировать собранное React приложение, после чего - некста там уже не будет, а статика, маршрутизация и реактивность останется. Что быстрее статики?
    что в нексте реакт всегда обращается к своему серверу для SSR

    Как настроите, так и будет работать. Можно всегда, можно иногда, можно никогда.
    а у обычного реакта мы фетчем просто запросы шлем, когда все spa приложение очень быстро работает без лишних запросов на сервер

    На Next тоже самое можно. А Ваш SPA в SEO может? А рендерить одни страницы без SEO, вторые ПРЕрендерить с SEO, а остальные и так и так на лету может? А единовременно в рамках одного приложения? А еще и без дополнительных библиотек? А еще с конским комьюнити в рамках одного инструмента?

    Еще начинают активно внедряться Server Components, которые по некоторым отзывам - могут стать отраслевым стандартом.

    Если Вас интересует лишь SPA без SEO и дополнительных опций рендеринг, который будет рендериться лишь на клиенте, то оптимальнее будет выбрать лишь React + Роутер + WebPack в качестве сборщика.

    Vercel

    Vercel, оплата интеграции по стандартному тарифу, ну Вы знаете ;)
    Ответ написан
    1 комментарий
  • Не получается подключить js файл через CDN, в чём может быть проблема?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Впервые подключаю js через cdn и не могу понять в чём проблема?!

    А если в консоль браузера глянуть?

    Один из вариантов:
    1. Неправильная ссылка.
    2. Блочит браузер (сам браузер или расширение).
    3. Блочит провайдер.
    Ответ написан
    Комментировать
  • Какие есть видеоплееры с возможностью добавления серий?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - https://github.com/CookPete/react-player (библиотека поддерживает возможность создания плейлистов из массива).
    - https://videojs.com/guides/react/ (можно создать видеоплеер с возможностью добавления серий или плейлистов).
    - https://github.com/vidstack/vidstack ("серии" нужно реализовать руками, хотя частично, функционал имеется).
    Ответ написан
    2 комментария
  • Несуществующие URL ведут на главную страницу. Как это может повлиять на SEO?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Если в адресной строке к урлу главной страницы припысывать различные символы, цифры и т.д. (т.е. прописывать несуществующие на данном сайте урлы), то отображается главная страница

    По сути - у Вас множество страниц с контентом главной, это значит, что существует множество одинаковых страниц, значит произойдет склейка страниц.
    Как это может повлиять на SEO?

    Варианты, между плохим и очень плохим, зависит от настроения поисковика.
    Сайт сделан на JQuery

    Это некий вариант SPA? Можно ссылку? Я пишу это к тому, что возможно, основные проблемы в SEO начинаются здесь...
    Ответ написан
    Комментировать
  • Сайт с www ведёт на страницу хостинга, а без www работает нормально. Нужно ли делать редирект?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно ли с этим что-то делать?

    Вижу тег "ПОИСКОВАЯ ОПТИМИЗАЦИЯ", попробую угадать, что Вы имеете ввиду. Скорее всего, вы хотели сказать "Нужно ли мне с этим что-то делать, чтобы поисковая оптимизация стала лучше"?
    Нужно! На данный момент у Вас 2 сайта, один с www, а другой без www. Делайте редирект с www на без www. Аналогичное сделайте с http > https.
    Ответ написан
    Комментировать
  • На чем быстрее запрограммировать сайт каталог?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите на чем быстрее запрограммируется сайт каталог? На вордпресс или на чистом коде?

    Зависит от ТЗ и разработчика. Если это простой сайт состоящий из простых статей - WP будет быстрее.
    И почему?

    Зачем разрабатывать то, что уже реализовано?
    При условии что верстка программисту будет предоставлена.

    Кстати, не факт, что этот фактор поспособствует ускорению ;)
    Сайт стандартный, без лишних дополнительных плюшек.

    А Вы откуда знаете, у Вас имеется необходимая компетенция так судить? Яндекс тоже простой, всего 1 желтая поисковая строка, работы на 10 минут...
    Ответ написан
  • Нужно ли снова устанавливать Node.js для каждого нового проекта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Попробую объяснить простым языком.

    0. Каждый проект по умолчанию имеет свои локальный пакеты (библиотеки), которые самостоятельно устанавливаются в корневую директорию node_modules, они устанавливаются на основе файла проекта package.json (инициализация).

    Предположим, что Вы не используете контейнеризацию, то:
    1. Ноду необходимо ставить глобально, например 18 версии. Что такое глобально? В таком случае, все Ваши проекты NodeJS смогут использовать эту ноду, хотя нода при этом не будет находиться локально ни в одном из Ваших проектов.
    2. Если все Ваши проекты используют исключительно ноду 18 версии, то дополнительную ноду ставить не требуется.
    ---
    3. Если у Вас проекты используют разные версии ноды, то рекомендую с нодой работать не на прямую, а через nvm (установка/удаление/переключение).
    ---
    4. Если Вы используете контейнеризацию, то обычно, нода+проект ставится в каждый контейнер.
    Ответ написан
    Комментировать