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

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

Все теги (5)

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

Все ответы (23)
  • Как имитировать клик на jQuery/JS?

    sokollondon
    @sokollondon
    Клик по элементу
    $('.btn').click();

    Клик по ссылке (чтобы произошёл переход по ссылке)
    $('a')[0].click();

    Клик по элементу после задержки
    setTimeout(function(){
        $('.btn').click();
    }, 1000);
    Ответ написан
    1 комментарий
  • Как реализовать скачивание файла через AJAX?

    sokollondon
    @sokollondon
    Как скачать файл после получения его по ajax
    Удобно когда файл долго создаётся и нужно показать preloader

    Пример при отправке веб-формы
    $(function () {
        $('form').submit(function () {
            $('#loader').show();
            $.ajax({
                url: $(this).attr('action'),
                data: $(this).serialize(),
                dataType: 'binary',
                xhrFields: {
                    'responseType': 'blob'
                },
                success: function(data, status, xhr) {
                    $('#loader').hide();
                    // if(data.type.indexOf('text/html') != -1){//Если вместо файла получили страницу с ошибкой
                    //     var reader = new FileReader();
                    //     reader.readAsText(data);
                    //     reader.onload = function() {alert(reader.result);};
                    //     return;
                    // }
                    var link = document.createElement('a'),
                        filename = 'file.xlsx';
                    // if(xhr.getResponseHeader('Content-Disposition')){//имя файла
                    //     filename = xhr.getResponseHeader('Content-Disposition');
                    //     filename=filename.match(/filename="(.*?)"/)[1];
                    //     filename=decodeURIComponent(escape(filename));
                    // }
                    link.href = URL.createObjectURL(data);
                    link.download = filename;
                    link.click();
                }
            });
            return false;
        });
    });

    Не обязательный функционал закомментирован для упрощения примера.

    Не требуется создавать временные файлы на сервере.

    На jQuery v2.2.4 всё работает. На старой версии будет ошибка:
    Uncaught DOMException: Failed to read the 'responseText' property from 'XMLHttpRequest': The value is only accessible if the object's 'responseType' is '' or 'text' (was 'blob').

    https://stackoverflow.com/a/60185326/4831608
    Ответ написан
    1 комментарий
  • Как сделать плавную прокрутку страницы до якоря?

    sokollondon
    @sokollondon
    Есть плагин jquery.scrollTo
    $.scrollTo($('#some_point'), 500);

    Настройка offset, например, если фиксированное верхнее меню:
    $.scrollTo($('#some_point'), 500, {'offset':-100});


    Вариант для всех якорей на странице:
    $("body").on('click', '[href*="#"]', function(e){
        $.scrollTo($(this.hash), 500);
    });
    Ответ написан
    Комментировать
  • Yii2, скачивание нескольких файлов?

    sokollondon
    @sokollondon
    Как скачать несколько файлов архивом
    $file = \Yii::getAlias('@webroot/archive'.microtime().'.zip');
    $zip = new \ZipArchive();
    $zip->open($file, \ZIPARCHIVE::CREATE);
    $zip->addFile("index.php");//добавляем файлы в архив
    $zip->close();
    if (file_exists($file)) {
        \Yii::$app->response->sendFile($file, 'archive.zip');
        ignore_user_abort(true);//удаление временного файла
        if (connection_aborted()) unlink($file);
        register_shutdown_function('unlink', $file);
    }
    Ответ написан
    Комментировать