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

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Когда ты ловишь "play" событие от сокета, ты вызываешь метод play() на своем плеере. Это побуждает плеер кинуть событие "play", которое ты тоже ловишь и отправляешь обратно на сервер. В итоге это зацикливается и бесконечно продолжается.

    Но это можно пофиксить. Введи какой-нибудь флаг, который будет показывать, вызван ли метод play() (или другие) твоим кодом или же пользователем. Потом этот флаг ты будешь проверять перед тем, как отправить событие на сервер.

    $(document).ready(function() {
        var socketio = io();
    
        let player = new Playerjs({
            id: "player",
            file: JSON.parse($("#player").attr("data-links"))
        });
    
        const playerFrame = $("#player"),
              messagesBox = $(".chat-box .messages"),
              messagesScroll = $(".chat-box"),
              chatInputs = $(".chat-inputs");
    
        let isApiCall = false; // флаг для отслеживания источника вызова
    
        socketio.on("play", (data) => {
            if (!player.api("playing")) {
                isApiCall = true; // устанавливаем флаг, что это вызов через API
                player.api("play");
                isApiCall = false; // сбрасываем флаг
            }
            player.api("seek", data.time);
        });
    
        socketio.on("pause", (data) => {
            if (player.api("playing")) {
                isApiCall = true; // устанавливаем флаг, что это вызов через API
                player.api("pause");
                isApiCall = false; // сбрасываем флаг
            }
        });
    
        socketio.on("seek", (data) => {
            isApiCall = true; // устанавливаем флаг, что это вызов через API
            player.api("seek", data.time);
            isApiCall = false; // сбрасываем флаг
        });
    
        playerFrame.on("play", (event) => {
            console.log(event.type)
            if(!isApiCall){ // отправляем событие только если это не вызов через API
                socketio.emit("play", { time: player.api("time") });
            }
        });
    
        playerFrame.on("pause", (event) => {
            console.log(event.type)
            if(!isApiCall){ // отправляем событие только если это не вызов через API
                socketio.emit("pause", {});
            }
        });
    
        playerFrame.on("seek", (event) => {
            console.log(event.type)
            if(!isApiCall){ // отправляем событие только если это не вызов через API
                socketio.emit("seek", { time: player.api("time") });
            }
        });
    });
    Ответ написан
  • Как удалить блок с таким-же textContent?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Чтобы решить эту задачу, вы можете использовать следующий подход:

    Создайте функцию, которая будет принимать строку и возвращать часть строки до символа ":".
    Пройдитесь по всем элементам с классом "result_text_item" и сравните начало textContent текущего элемента с началом textContent всех предыдущих элементов, используя созданную функцию.
    Если найдено совпадение, удалите текущий элемент.
    Вот пример кода на JavaScript, который можно использовать для решения этой задачи:

    // Функция для получения начала строки до символа ":"
    function getStartOfText(text) {
      return text.split(":")[0];
    }
    
    // Получаем все элементы с классом "result_text_item"
    let items = Array.from(document.getElementsByClassName("result_text_item"));
    
    // Проходимся по всем элементам с конца (так как нам нужно удалять последний созданный элемент)
    for (let i = items.length - 1; i >= 0; i--) {
      // Получаем начало textContent текущего элемента
      let currentItemStart = getStartOfText(items[i].textContent);
      
      // Проверяем, есть ли совпадения с началом textContent других элементов
      for (let j = 0; j < i; j++) {
        if (getStartOfText(items[j].textContent) === currentItemStart) {
          // Если найдено совпадение, удаляем текущий элемент и прерываем цикл
          items[i].remove();
          break;
        }
      }
    }

    Обратите внимание, что этот код удаляет все последующие элементы, которые начинаются так же, как и любой предыдущий элемент. Если вам нужно проверять только совпадения с предыдущим элементом, вы можете слегка изменить этот код.
    Ответ написан
  • Как вставить видео с instagram в html?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Вставить видео с Instagram напрямую на ваш сайт может быть сложно, так как Instagram не предлагает настраиваемые встраиваемые коды для видео, как это делают некоторые другие платформы, такие как YouTube.
    Тем не менее, вы можете использовать сторонние сервисы для получения прямой ссылки на видеофайл Instagram и использовать его на вашем веб-сайте с помощью тега . Вот шаги, которые вы можете выполнить:

    Сначала найдите видео, которое вы хотите вставить, на Instagram.
    Скопируйте URL этого видео.
    Используйте сторонний сервис или инструмент для скачивания видео с Instagram. Вы можете использовать сервисы, такие как "DownloadGram", "InstaOffline", "SaveFromWeb" и т.д.
    После скачивания видео вы можете загрузить его на ваш сервер или любое место хранения в Интернете, где оно будет доступно для публичного доступа.

    После загрузки видео используйте тег для его вставки на ваш веб-сайт. Например:

    <video controls autoplay muted loop>
      <source src="URL_ВАШЕГО_ВИДЕО" type="video/mp4">
      Ваш браузер не поддерживает HTML5 видео.
    </video>

    Замените URL_ВАШЕГО_ВИДЕО на URL видео, которое вы загрузили. В этом примере атрибуты controls, autoplay, muted и loop позволяют воспроизводить видео автоматически, без звука и зацикленно. Вы можете удалить или изменить эти атрибуты в соответствии с вашими потребностями.
    Ответ написан
    1 комментарий
  • Как сохранять данные в object что бы потом циклом их выводить в поля?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    В объект можно засунуть массив и про нему пробегаться а в массив еще можно объектов накидать. Можно задать как свойство и к нему обращаться.. Слишком расплывчата задача
    Ответ написан
    Комментировать
  • Как объединить два массива объектов в один массив?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Предлагаю прогулятся до MDN

    Метод concat() возвращает новый массив, состоящий из массива, на котором он был вызван, соединённого с другими массивами и/или значениями, переданными в качестве аргументов.

    Соединение двух массивов
    Следующий код соединяет два массива:

    var alpha = ['a', 'b', 'c'],
        numeric = [1, 2, 3];
    
    var alphaNumeric = alpha.concat(numeric);
    
    console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]
    Ответ написан
  • Как правильно спарсить DOM элемент с помощью Cheerio?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    1) Возьми экстешн для хрома jqueryinject и поработать с ней.
    2) request асинхронная функция должна быть и результат ждать await конечно как ты получишь если у тебя функция срабатывает, раньше, чем получает ответ
    3) А что ты хочешь вернуть в этом реквесте наверное контент юзай там еще цикл
    Ответ написан
  • Нужен совет по созданию игры 2d (runner)?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    на udemy есть курс по геймдеву на js рекомендую потратить месяца 2-3 на изучение работы с контекстами канвасов
    Ответ написан
  • По какому принципу взаимодействия с сервером работает React js?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Есть реакт - это фронтээнд сервер и есть к примеру JSON- server или сервер с БД. т.е два сервера
    Ответ написан
    Комментировать
  • Можно ли создать "Студенческий портал" только с HTML/CSS + JS?

    lookreciuspin
    @lookreciuspin
    Data recovery and truth revelation hacker
    Можно SPA на Vue сделать или React || Angular
    Ответ написан
    Комментировать