Ответы пользователя по тегу JavaScript
  • Что делают асинхронные генераторы (async function*)?

    dummyman
    @dummyman
    диссидент-схизматик
    Хм. Странно, что вам ни разу сильно не понадобились обычные генераторы. Промисы, генераторы, async/await, co/thunkify - все они призваны распутывать лапшу из колбэков. Причем, решения могут выглядеть по-разному, но формально работает по одному и тому же алгоритму. Потому ваше утверждениие чрезчур категорично. То есть, например, использование async/await бабелью будет перекодировано в алгоритм схожий с принципами промисов. Но, бывают даже находятся люди, которые используя более высокоуровневые async/await, утверждают, что не пользуются ни промисами, ни генераторами. - И зачем их придумали вообще?!

    Теперь по вашему вопросу. А что вас удивляет в новых генераторах? Я бы назвал их не асинхронными, а генераторами генераторов! Так как простые генераторы тоже задуманы выполняться асинхронно. И использовано оно может быть в тех же ситуациях, просто смотря на уровень выше. Ну и for await, соответственно, туда же. - Может быть использован, например, когда вам нужно прочитать все файлы в папке рекурсивно.
    Ответ написан
    4 комментария
  • Как разрешить вводить только указанные числа?

    dummyman
    @dummyman
    диссидент-схизматик
    Если нужны только разряды, зачем что-то вводить? Пусть и вводят вместо чисел разряд 3,2,1,0,-1,-2,-3 - не ошибутся!
    Ответ написан
  • Рисование графиков, есть ли интересная статья или пример?

    dummyman
    @dummyman
    диссидент-схизматик
    Из jquerийных простенький morris и посложнее flot.
    Для Анжелы n3. Для любителей Ember Charts.
    Простенькие ChartJS и uvCharts.
    Очень легкий и хорошо разжеванный ChartList.
    Не менее хорошо разжеванный, но платный, ZingChart.
    Поддержку legacy обеспечит FusionCharts - обещают работу на IE6.
    Профессионалам понравится список фичей plotly.
    Вы бы конкретнее указывали какие графики вам нужны. А то все не подходят, а что нужно - секрет. Хотите создавать свою систему - читайте исходники существующих. - Врятли любая статья будет лучше и более полной чем исходники рабочих библиотек.
    Ответ написан
    5 комментариев
  • Как организовать переход между страницами с таким эффектом?

    dummyman
    @dummyman
    диссидент-схизматик
    Ваш пример принципиально ничем не отличается от getbootstrap.com/javascript/#carousel
    Ищите простые вещи в любых сколько либо сложных вещах. А на простые скрипты еще проще вешать функционал.
    Ответ написан
  • Как сделать при активной строке поиска кнопку активной?

    dummyman
    @dummyman
    диссидент-схизматик
    У вас там похоже нестандартный обработчик на кнопке submit. И похоже он читает состояние inputа, но когда форма пытается засабмититься, сначала пропадает фокус с инпута, тем самым обработчик думает что форма закрыта. Хотя может я ошибаюсь, я бы так не далал.

    Во-первых свистоперделку можно сделать средствами html+css.
    Во-вторых, перегружать кнопку сабмита - плохая практика. Обычно перегружают сам сабмит у формы.
    Ну и втретьих... Господи, что это?! Что вы курите? Вы пробовали как все это работает на мобильных?
    Ответ написан
  • Как проверить существует ли домен?

    dummyman
    @dummyman
    диссидент-схизматик
    Совсем не обязательно завязываться на какие либо сервисы. Всю информацию можно запросить с DNS-сервера вашего провайдера. Впрочем, вы можете запросить информацию с любого DNS-сервера, например, гугловского 8.8.8.8.
    15c57001619f41958fc2ec343be90f4e.png
    Ответ написан
    4 комментария
  • Нужны ли фреймы в html?

    dummyman
    @dummyman
    диссидент-схизматик
    Посмотрел комментарии к вопросу... Оказывается, такие недалекие ответчики... На кой фреймы бы были нужны разрабатывая один сайт? Какие хедеры и футеры? Причем здесь php? Конкретно iframe изначально был сделан для публикаций чужих сервисов на своем сайте. Например, у вас есть сайт с фотографиями природы в разных местах/континентах. Вы выкладываете ваш материал "бесплатно и без смс". Чтобы отбить затраты на хостинг, вы по партнерской программе подключаете баннер с выбором/поиском тура/перелёта в от места обитания посетителя до места где сделана фотография. За каждый купленный тур/билет агрегатор выплачивает вам 5% стоимости. То есть ваша задача - подключить ифрейм, а как оно там будет дальше работать - задача партнера. Вы лишь отвечаете за увеличение количества посетителей своего сайта. Вот и все фреймы...

    UPD Обычные фреймы тоже довольно популярны. Например, их до недавнего времени использовал Google при отображении сохраненной версии страницы. Некоторые анонимайзеры/веб-прокси используют горизонтальный фрейм для отображения адресной строки. Также можно использовать при проектировании в админках сайта, когда страница работает сама по себе, но, например, сбоку есть какое-то сервисное управление, и друг другу они не мешают.
    Ответ написан
    2 комментария
  • Динамическая подгрузка js, css в REACT?

    dummyman
    @dummyman
    диссидент-схизматик
    А зачем это надо? Во первых, одним файлом загружать гораздо быстрее, чем десятками мизерных почти с одним и тем же пустым шаблоном кода.

    Если делать индивидуально для каждой страницы - может быть пересекающийся код, который помимо трафика сожрет повторно еще и оперативки.

    Например, то же сжатие gzip имеет смысл на файлах >8kb, в противном случае он может не только не сжимать код, но и немного увеличить. При этом один собранный общий файл js или css gzip легко может сжать и в 10 раз.

    Собирать код в общие файлы также полезно и для сервера. Даже если они кэшируются браузером, браузер все равно отправляет запрос по каждому файлу web-серверу, который в свою очередь смотрит в папку с проектом и отвечает браузеру, что файл не изменился. А каждое обращение к HDD съедает его ресурс и увеличивает время переходов по сайту.

    Мое мнение - если у вас меньше 20Мб яваскрипта и стилей - не стоит задумываться об их разделении. Большой головняк и при этом минимум эффективности.
    Ответ написан
  • Какой есть красивый jquery конструктор табов?

    dummyman
    @dummyman
    диссидент-схизматик
    Ответ написан
    Комментировать
  • Блок сообщения и уведомления уходит за экран. Как исправить?

    dummyman
    @dummyman
    диссидент-схизматик
    Попробуй поменять .wrapper на body:
    body {
        margin-right: auto;
        margin-left: auto;
        min-width: 720px;
        max-width: 1920px;
        width: 85%;
    }


    или

    body, .wrapper {
        margin-right: auto;
        margin-left: auto;
        min-width: 720px;
        max-width: 1920px;
        width: 85%;
    }
    Ответ написан
  • Как получить id элемента по которому кликнули?

    dummyman
    @dummyman
    диссидент-схизматик
    UPD Немного изменил решение прямо по вашему заказу

    var buttons = document.querySelectorAll('.text.block');
    var test1 = document.querySelector('#test1');
    var test2 = document.querySelector('#test2');
    Array.from(buttons).forEach(function(button){
        button.addEventListener('click', function(e) {
        		test1.innerHTML=e.target.id;
            test2.innerHTML=e.target.innerHTML;
        		console.log(e.target);
        })
    });


    https://jsfiddle.net/568ry98w/4/
    Ответ написан
  • Кастомизировать scrollbar?

    dummyman
    @dummyman
    диссидент-схизматик
    Я согласен со Stalker_RED: Стандартный браузерный кастомизируется не полностью, и далеко не во всех браузерах.
    Вообще, кастомизируйте скрол только в том случае, если вы делаете полноэкранное приложение. Если вам нужно сие чудо для обычного сайта - я бы рекомендовал вам не делать этого. Если заказчик утвердил дизайн - отговорить руководство от этой ереси, пусть заказчик переутвердит дизайн. - Это будет однозначно в интересах заказчика. Дайте установленной у пользователя ОС решать самой как должен быть кастомизирован его скрол. Уверяю вас, браузеров, гаджетов, операционных систем такое множество, что вы не предусмотрите все варианты отображения скролов, вы просто сделаете невозможным работу стандартного. А пользователю можно выставить например заглушку типа установите себе нормальный браузер IE11+ для отображения контента, в противном случае вы не сможете прокрутить страницу до данного контента. И мало кого волнует, что на этой ОС и вообще на этой платформе невозможно установить данный браузер. Не говоря уже о том, что на устройстве может не быть как манипулятора "мышь" так и touchscreen.
    Ответ написан
    Комментировать
  • Ресурсы/книги по кроссбраузерности?

    dummyman
    @dummyman
    диссидент-схизматик
    Ну вы проснулись, 21й век на дворе. Времена е..ущейся верстки Оперы и убогого добавляющего вкладки в IE6 Maxthon давно прошли.

    Рецепт один:
    Тестируйте свои сайты в lynx, если пойдет там, то пойдет и везде.

    Все вышесказанное - это был сарказм, не воспринимайте всерьез.

    Вы, скорее весго, имеете в виду "адаптивная верстка сайта". Попробуйте погуглить, или наберите в поиске ютуба. Уверен, сборник сразу всего либо не нужен, либо вы собирете этот сборник для себя сами всего за 1-3 дня.
    Ответ написан
    Комментировать
  • Как передать файл на сервер с drag&drop?

    dummyman
    @dummyman
    диссидент-схизматик
    как я думаю записываю в инпут формы типа файл ту саму картинку, по крайней мере в консоль вывожу и вижу что размер есть, объект есть.

    Нет, вы не правильно думаете. Картинку вы видите, но file содержит лишь url вида file://... - этого достаточно чтобы файл отобразить, но не достаточно, например, чтобы отправить ее аяксом.
    Чтобы прочитать картинку (получить блоб) необходимо использовать FileReader.
    UPD. чуть переформулировал.
    Ответ написан
  • Как автоматически подключать стили скрипты шрифты из node_modules?

    dummyman
    @dummyman
    диссидент-схизматик
    Может быть, я устарел и webpack стал универсальным средством, но поначалу его использавали для desktop-ных задач, например, совместно с electron, который многим не подходил или был просто неудобен из-за большого количества мелких файлов в node_modules. А уже после, вроде даже совсем недавно, весь bower ставли перетаскивать на npm.
    Ответ написан
    Комментировать
  • Angular 2 как переопределить сервер с nodejs на apache(openServer) и прокомментируйте подвопрос?

    dummyman
    @dummyman
    диссидент-схизматик
    По сути вам нужно внедрить прокси внутрь вашего node-сервера.
    Отдельно это делается как-то так:
    var http = require('http');
    
    http.createServer(onRequest).listen(3000);
    
    function onRequest(client_req, client_res) {
      console.log('serve: ' + client_req.url);
    
      var options = {
        hostname: 'www.google.com',
        port: 80,
        path: client_req.url,
        method: 'GET'
      };
    
      var proxy = http.request(options, function (res) {
        res.pipe(client_res, {
          end: true
        });
      });
    
      client_req.pipe(proxy, {
        end: true
      });
    }

    Код взят отсюда.
    По сути заходя http://127.0.0.1:3000/ получаешь работоспособный google.
    Правда, код не проверял. Но выглядит рабочим.
    Ответ написан
    Комментировать
  • Как с помощью js убрать теги из строки, обернуть искомый текст и затем смержить правки?

    dummyman
    @dummyman
    диссидент-схизматик
    console.log(document.body.innerText);

    Вместо document.body можно использовать, например, document.querySelector('p')
    Или даже так
    Array.from(document.querySelectorAll('p')).map(el=>el.innerText)
    Ответ написан
    Комментировать
  • Как добавить событие click на новый DOM имеющий тот же класс, что и старые (несгенерированные DOM)?

    dummyman
    @dummyman
    диссидент-схизматик
    Через селектор можно обращаться к элементам в структуре DOM. Пока элемент не вставлен в DOM, обращаться к нему можно сохранив ссылку на него в переменной. Для поиска элементов внутри конкретного элемента можно использовать find():
    $('.photogallery__column').find('.photo__link')
    Ответ написан
    Комментировать
  • Можно ли на overflow: hidden элемент принудительно наложить абсолютно спозиционированный элемент?

    dummyman
    @dummyman
    диссидент-схизматик
    var bodyRect = document.body.getBoundingClientRect();
    var hiddenRect = document.querySelector('#hidden').getBoundingClientRect();
    var overlay = document.querySelector('#overlay');
    overlay.style.top=(hiddenRect.top - bodyRect.top) + 'px';
    overlay.style.left=(hiddenRect.left - bodyRect.left) + 'px';

    Только это при условии что overlay лежит в body, элемент hidden может быть где угодно в DOM.
    Ответ написан
    Комментировать
  • Создать объект на основе массива?

    dummyman
    @dummyman
    диссидент-схизматик
    Конечно, можно написать оптимальнее.
    Есть одно негласное правило JS:
    Определяй структуру объекта в конструкторе и никогда не меняй после!

    Еще хуже добавлять объекту свойства в цикле.

    Так будет точно правильнее
    function AObj(arr){
        arr.forEach( v => Object.assign(this, { [v]: objVal } ) );
    }
    var aObj = new AObj([1,2,3]);
    Ответ написан
    7 комментариев