Задать вопрос
  • Стилизация сообщений на почту?

    @ksnk
    А если НЕ использовать htmlspecialchars , будет ли приходить более менее нормальный html? С какой целью используется htmlspecialchars ? Нужно ли вставленные вручную элементы оформления тоже пропускать через эту функцию?
  • Стилизация сообщений на почту?

    @ksnk
    htmlspecialchars с какой целью вызывается?
    Отправка почты происходит в режиме текста или в html?
  • Почему clearRect странно работает с Path2D?

    @ksnk
    Ну, дык. В первом варианте никакой clearRect не вызывается, а вызывается context.translate. Нужно запоминать дельты и вызывать отрисовку задач.
    Во втором случае - нужно добавлять один раз, а не два. Вероятно, нужно пристрелить taskList.push(task), впрочем можно и taskList.map...
  • Как решить такую проблему с поведением элемента?

    @ksnk
    .sale__input:focus + .sale_label - -то правило поменять вот так
    .sale__input:focus + .sale_label,
    .sale__input:not(:placeholder-shown) + .sale_label{
      font-size: 10px;
      top: 7.8px;
    }

    как, собственно, Ankhena и говорил
  • Как отправить запрос с конкретной формы и передать ID или Class формы в PHP-скрипт через ajax-запрос?

    @ksnk
    button: $(form).find("input[name='button']").val(),

    вот вместо вот этого поставь
    button: $(form).find("input[name='button']").data('formid'),

    и в разметке
    <button class="button" data-formid="form1">Отправить</button>

    Ну и различай формы в php по этому параметру. А то тебя сейчас научать жить без jquery :)
  • Выбор меню. Оставить фокус при загразки другой html?

    @ksnk
    I.CaR Soft, Фокус - это что такое ? Насколько прокручено меню? Запомнить scrollTop элемента меню в localStore по клику на пункт меню и восстановить при показе новой страницы.
  • Как оцените тестовое задание для junior front-end?

    @ksnk
    My1Name, Тут проверяется владение Google Map Api, возможно это было отражено в вакансии. С учетом необходимого уточнения пунктов в гугле - дня должно хватить. Неделя - если читать документацию придется по всем пунктам ТЗ. Все примеры, которые требуются по ТЗ, по моим воспоминаниям, встречаются в родной документации. Собственно работа будет в том, чтобы объединить их в одном скрипте.
  • Выбор меню. Оставить фокус при загразки другой html?

    @ksnk
    Знает ли php урл той страницы, для которой формируется? В момент генерации пункта меню можно сравнить ссылку с этим урл и поставить активность.
  • Почему нельзя/можно писать бизнес-логику в sql?

    @ksnk
    alexeyshkolnik, Традиционное ООП стороение приложения выделяет слой отображения и слой данных. Бизнес-логика в SQL - означает, что слой данных будет разделен между двумя отдельными системами программирования. Требуется довольно серьезное планирование архитектуры, чтобы угадать какие конкретно компоненты логики не будут менятся в течении жизни приложения.
    Единственный разумный минус - дороговизна поддержки. Если для "все в PHP" достаточно квалифицированного кодера, для "неизвестная часть логики в SQL" требуется еще и SQL кодер дополнительно, что может сильно удорожить поддержку.
  • Как лучше избежать загрузки кешированных файлов?

    @ksnk
    tyxeo, Нужно смотреть по вкладке Сеть в Хроме. Если файлы каждое обновление страницы качаются заново - то правильно. Если не качаются - нужно смотреть какие реально заголовки кэширования долетают до броузера и почему не те, которые нужно
  • Как лучше избежать загрузки кешированных файлов?

    @ksnk
    tyxeo, да что-то вроде
    <?php
    // самые первые строки файла, пока ничего не выводится в броузер
    header('Cache-Control: no-store');
    // все остальное

    В принципе - этого может хватить.

    Если это одностраничник с известно где расположенными стилями и скриптами, то можно так генерировать ссылки на них
    function link($link){
       if(is_readable($link)){
         return $link.'?'.filemtime($link);
       } else if(false===strpos('?',$link)) {
         return $link.'?'.rand(1000,99999);
       } else 
         return $link;
    }


    <link rel="stylesheet" type="text/css" href="<?=link('css/styles.css')?>"...

    Так появится возможность все таки кэшировать на клиенте неизмененные файлы. По внешнему виду ссылок (количество цифр после имени файла) можно понять, находит php файл исходник или нет.
  • Как лучше избежать загрузки кешированных файлов?

    @ksnk
    Возможно, стоит познакомится с документацией. Если доступно изменение заголовков - то поставить на период отладки Cache-Control: no-store может оказаться разумным решением.

    Более правильным вариантом, если изменения заголовков невозможны, будет прописать время изменения файла.

    mayton2019, к примеру, включено кэширование заголовком Cache-Control: навечно
  • Что делать если попап окно уже открыто при загрузке на сайт?

    @ksnk
    Повесь на событие window.onfocus функцию, которая выясняет - открыто окно или нет. Событие будет срабатывать всегда, когда переключаешься по вкладкам броузера, так что осторожнее с лишними действиями.
    Такое (внезапно открытые окна) бывает когда делается возврат кнопкой Back по истории, отследить такое тоже можно, но сложнее и иногда с глюками.
  • Не маштабируется svg в clip-path?

    @ksnk
    clip-path никак не масштабируется. Если хочется использовать именно clip-path, то резиновость будет сложно прикрутить. Ее можно подменить медиа запросами и фиксированной шириной
    .bottom-menu {
        position: fixed;
        bottom: 0;
        z-index: 100;
        overflow-x: hidden;
        height: 82px;
        width: 1000px;
        left: 50%;
        transform: translateX(-50%);
    }
    Тут вставлено выравнивание по середине фиксированного блока и проставлена абсолютная ширина. Для разных разрешений можно добавить разные svg для для резки.
    Ну и вставлять ненужный svg в код как-то не очень красиво. Вот такое правило
    .bottom-menu  {
       clip-path: path("M0 81.99l0 -54.18 457.77 0c6.94,-0.23 11.28,-1.66 13.74,-8.95 8.53,-25.15 48.45,-25.15 56.98,0 2.46,7.29 6.8,8.72 13.74,8.95l457.77 0 0 54.18 -1000 0z");
    }
    позволяет сделать примерно то же самое. Да и менять контуры для резки меню в медиа-секции станет удобнее.

    Есть более другие способы рисования всяких круглоэлементов, с помощью linear-gradient и radial-gradient. Вот тут я творчески утащил отсюда же какой-то интересный мне пример. Если не обращать внимание на "круглость" перехода от активного элемента к нективному - все, примерно, такое как тут надо.
  • Как закрасить прозрачную область png?

    @ksnk
    У вас PNG не той системы... Нужно оставить прозрачным только то, что нужно перекрашивать, а не весь белый фон вообще.
    Возможно поможет вот это How do I do flood fill on the HTML canvas in JavaScript?
  • Как сверстать позицию блоков?

    @ksnk
    А в чем проблема-то ? Сделать полупрозрачный бякграунд?
  • Валидация с setCustomValidity. Можно ли сократить этот код?

    @ksnk
    Тут надо не сокращать, а менять. Валидировать по имени поля - это гарантированно дублировать весь комплект валидации для каждой новой формы. Например, телефон, обычно, помечается < input type="tel" ... Так что накручивать на него логику проверки на телефонный номер нужно при наличии именно такого типа поля. email вполне корректно фильтруется самим броузером type="email"
    Есть встроенная в броузер валидация по регулярке, если автоматически приписывать к полю с телефоном атрибут pattern="регулярка проверки на телефон", должно быть примерно что надо.
    К этой долгой странной песне придется накручивать проверку данных на стороне сервера, фактически дублируя проверки уже сделанные на стороне броузера.

    Можно пойти с конца, сделав минимальную проверку в броузере, чисто на встроенных механизмах, переслав данные серверу, и продемонстрировать обнаруженную сервером ошибку в данных.

    Что нибудь вроде такого
    var h=function(){
                this.setCustomValidity('');
            }
            // убираем сообщение об ошибке при начале изменения в поле. Неплохо бы добавить обработку 'paste'
            $('input, textarea', form_selector).change(h).on('keydown',h);
    
            function setInvalid(invalid, form) {
                // неплохо бы убрать сообщение об ошибке из предыдущей проверки
                 $('input, textarea', form).trigger(h);
                // ставим первое сообщение в списке ошибок
                for(var a in invalid){
                    var i=$('[name="'+a+'"]', form);
                    if(i.length>0) {
                        i[0].setCustomValidity(invalid[a]);
                        i[0].reportValidity();
                        return;
                    }
                }
               // не найдено поля с таким именем - выводим ошибку в специально обученное место
               console.log('opps!', invalid);
                
            }

    Ajax должен передавать данные в виде отдельного поля результата - error:{`имя поля`:`сообщение об ошибке`}, просто для определенности, что ошибка была обнаружена и форма не была обработана сервером
    ...
    success: function(data){
         if(data.error){
               setInvalid(data.error,form);
               return ;
         }
    }

    Из минусов - выводится только одна ошибка в единственное поле формы. Это свойство самого setCustomValidity, насколько я понимаю, если лепить несколько раз, все равно будет демонстрироваться один последний. Но никто не мешает отправить форму еще раз
  • Как сделать pdf файл для скачивания из элемента битрикс?

    @ksnk
    Содержимое больше похоже на предупреждение об ошибке. Можно посмотреть в bitrix/modules/error.log, обычно, настоящие сообщения об ошибках попадают туда.
  • Как зациклить волну, сделанную из кривой безье в canvas.js?

    @ksnk
    Подобрать параметры setLineDash так, чтобы не прыгало при сдвиге. Или кратно увеличить размер отрисовываемой области, чтобы помещалось точное количество пунктиров.
  • Почему mail.ru некорректно отображает html-письмо?

    @ksnk
    Верстка писем - это отдельное искусство разметки. Вымирающее, к счастью, но пока еще, благодаря mail.ru - живое... Верстай таблицами, йуный падаван... Ну и все стили не в отдельных блоках-файлах, а прямо в стилях тегов. Просто открой в mail.ru спам письмо, которое выглядит нормально и посмотри разметку. html5-говоришь? Это mail.ru style!...