• Как сделать тестовый звонок на webRTC?

    @writer_2159
    Жуть... просто жуть...
    Это больше вопрос по настройке как вариант asterisk.
    От js тут потребуется максимум выполнить ajax запрос, итогом которого будет поставлена задача (а астериске call файлы) на звонок клиенту и выполнение определенного сценария (например позвонить клиенту, воспроизвести запись, DTMF в зависимости от этого что-то сделать).
    Ответ написан
    Комментировать
  • Проблемы с typeof и объектами?

    @writer_2159
    Жуть... просто жуть...
    prompt возвращает строку.

    как вариант

    let i = {
        first: prompt('Назовите первое число'),
        second: prompt('Назовите второе число'),
        third: prompt('Назовите третье число'),
    }
    
    for (let x in i){
        const result = +i[x]; 
        if(isNaN(result)){
            alert('Введите корректное число')
            continue;
        }
        if(i[x] % 2 == 0){
            alert('Число '+i[x] +' четное');
            continue;
        }
        
        alert('Число '+i[x] +' нечетное')
        
    }
    Ответ написан
  • Парсинг с авторизацией на nodejs?

    @writer_2159
    Жуть... просто жуть...
    реализовывал что-то подобное.

    вкратце:
    делаешь запрос на авторизацию, получаешь куки, запоминаешь их и дальше по страницам с передачей этих кук

    fetchQueryAuth = await fetch(
        _url, 
        {
            "method": "GET",
        });
    
    const cookie = fetchQueryAuth.headers.raw()['set-cookie']
    Ответ написан
    1 комментарий
  • Как повесить обработчик на динамический элемент?

    @writer_2159
    Жуть... просто жуть...
    Делегирование событий.
    событие весишь на родителя и проверяешь что клик был по нужному элементу

    https://learn.javascript.ru/event-delegation
    Ответ написан
    Комментировать
  • Почему объект в консоли различается при скрытом\раскрытом состоянии?

    @writer_2159
    Жуть... просто жуть...
    Такова особенность консоли. Если был вызван лог и после этого объект изменен, то он будет отображен в консоли в его конечном состоянии (тоесть уже измененным)
    Ответ написан
    Комментировать
  • Как повестить событие onclick на динамически создаваемый button?

    @writer_2159
    Жуть... просто жуть...
    делегирование событий. тоесть навешиваем событие на родителя, который не перерисовывается (да хоть на document), а в событии проверять что событие отработало при взаимодействии с нужным элементом.
    Ответ написан
    Комментировать
  • Можно получить промис запроса к бд без коллбека?

    @writer_2159
    Жуть... просто жуть...
    Предположу что такой вариант нужен?

    async await
    async getAll(_sql) {
    
            let conn;
            try {
                conn = await this.pool.getConnection();
                return await conn.query(_sql);
    
            } catch (err) {
                throw Error(err);
            } finally {
                if (conn) {
                    await conn.release();
                }
            }
    
        }
    getAll("SELECT * FROM users").then(rows => {
    
                if (rows.length) {
                    return rows[0];
                } else {
                    return null;
                }
            })
    Ответ написан
    Комментировать
  • Как реализовать добавление пункта SELECT'a в список по клику на этот пункт?

    @writer_2159
    Жуть... просто жуть...
    const select = document.querySelector('select');
    const ul = document.querySelector('.testClassUl');
    
    select.addEventListener('change',()=>{
    	const selectedOptions = select.querySelectorAll('option:checked')
        
      ul.innerHTML  = "";
      
      for(const  option of selectedOptions){
        var li = document.createElement("li");
        li.classList.add('testClassLi');
        li.innerText = option.innerText;
        ul.appendChild(li);
      }
     
    });
    Ответ написан
    Комментировать
  • Как правильно реализовать авторизацию пользователей?

    @writer_2159
    Жуть... просто жуть...
    Как то раз делал похожее.

    Есть интерфейс в котором авторизуется пользователь. если открыть вторую вкладку (в этом браузере или другом компе, неважно), вылезает "уже есть открытая вкладка".

    Собственно реализовал на сокетах. при открытии вкладки после авторизации засылаешь сокет, на сервере , проверяешь что у такого пользователя еще нет открытого соединения, записываешь что такой id сокета это такой id пользователя.
    При закрытии вкладки ловишь дисконект на сервере и затираешь данные о id пользователя
    Ответ написан
    Комментировать
  • Как правильно составить тело запроса при multipart/form-data?

    @writer_2159
    Жуть... просто жуть...
    Вот прям из коробки есть вариант
    const formData = new FormData();
    formData.append('file', document.querySelector('input[type=file]').files[0]);
    
    fetch('http:google.com', {
            body:formData,
            'POST',
        });


    на стороне PHP принимается как $_FILES
    Ответ написан
  • Почему ломаются события в javascript после перерисовки html?

    @writer_2159
    Жуть... просто жуть...
    К вышесказанному (о повторном навешивании) могу добавить:
    делегирование событий. тоесть навешиваем событие на родителя, который не перерисовывается (да хоть на document), а в событии проверять что событие отработало при взаимодействии с нужным элементом.
    Ответ написан
    Комментировать