Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (40)
  • Как сделать подобное?

    @f_ban
    Конкретно в данном примере canvas использован. А если взять в общем, разобрашись с стандартами/спецификациями HTML5 (CSS, DOM, JS) + SVG, то можно и более изящное решение сделать, у которого внешний вид и поведение каждого визуализируемого объекта настраивается в таблице стилей и обработке событий и легко меняется в коде JS. Таким образом, не придется по каждому чиху переписывать код отрисовки (да и вообще с ним заморачиваться).
    Если же визуализируемых объектов будет многовато, то наверное все таки лучше канвас.
    Ответ написан
  • Как валидировать форму для скачивания файла с минимумом JS?

    @f_ban
    1. Используйте input[type=submit]/button[type=submit]
    2. Подпишитесь на событие submit на форме
    3. В обработчике события запускайте загрузку файла с помощью примерно такой функции
    // https://stackoverflow.com/questions/3916191/download-data-url-file/45905238#45905238?newreg=ddb3c48865d04c319b39f772df762521
    function download(dataurl, filename) {
      var a = document.createElement("a");
      a.href = dataurl;
      a.setAttribute("download", filename);
      a.click();
    }

    3. Что касается невозможности нажатия на кнопку сабмита, если хоть одно поле формы не валидно, то навешайте примерно такой стиль:
    #someform:invalid [type=submit]{
      pointer-events: none;
      
      /* другие нужные стили, да хоть display: none; */
    }

    4. Если редирект хотите выполнять на бэке, тот здесь проблем нет - просто перенаправляйте в бэковом обработчике формы. Если будете редиректить клиентом, то в обработчике сабмита отмените дефолтовую реакцию на ивент, с формы соберите данные и пошлите AJAX-ом на бэк, и затем делейте редирект на сэнкью-пейдж, если данные отправились успешно.
    Ответ написан
  • Самообновляющийся результаты?

    @f_ban
    WebSocket, long pooling ( практически полный онлайн )
    ну и предыдущий вариант, если нет возможности реализовать серверной поддержки websocket и long pooling

    а вот здесь сводку по всем подобным техникам можно почитать
    learn.javascript.ru/ajax-summary
    Ответ написан
  • Как переписать функцию через промисы?

    @f_ban
    const fs = require('fs');
    const path = require('path');
    
    let pathSupplied = './';
    let extFilter = 'js';
    
    let extension = (element) => {
        let extName = path.extname(element);
        return extName === '.' + extFilter;
    };
    
    let walk = function (dir) {
        const result = [];
    
        fs.readdir(dir, function (err, list) {
            list.forEach((item) => {
                let itemPath = path.join(dir, item);
                fs.stat(itemPath, (e, stats) => {
                    if (stats.isDirectory()) {
                        walk(itemPath);
                    } else {
                        if(extension(itemPath)){
                            console.log(itemPath)
                            result.push(itemPath);
                        }
                    }
                });
            });
        });
    
        return result;
    }
    
    walk(pathSupplied);
    
    walkAsync = (dir)=>{
        return new Promise((resolve)=>{
            resolve(walk(dir))
        });
    }
    Ответ написан
  • Возможно ли определить включен ли GPS на смартфоне из мобильного браузера?

    @f_ban
    Прямого API, предоставляющего такой функционал, не встречал.
    Использую такой трюк. Метод navigator.geolocation.getCurrentPosition() вторым параметром принимает обработчик ошибок. Если в обработчик попала любая ошибка кроме PERMISSION_DENIED, то сообщаю пользователю, что геолокация не доступна, прошу проверить включен ли модуль геолокации.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (4)