• Как вернуть страницу без перезагрузки?

    @zkrvndm
    Софт для автоматизации
    Перед тем, как выполнять этот код запиши содержимое страницы в переменную, только потом запускай:
    page = $('html').html(); // Сохраняем страницу в переменную page
    
    $('html').html('<head><title>' + translations['core.no_internet_connection'] + '</title></head><body><div style="font: 12pt/10pt sans-serif; margin-top: 200px; text-align: center;"><p>' + options['siteName'] + '</p>' + translations['core.no_internet_connection'] + '</div></body>');
    
    // Ставим таймер:
    setTimeout(funvtion() {
        $('html').html(page); // Спустя 5 сек. записываем содержимое переменной обратно на страницу
    }, 5000);
    Ответ написан
    Комментировать
  • Почему в объекте Response нет самого ответа?

    @zkrvndm
    Софт для автоматизации
    Потому что может возникнуть необходимость читать поступающие данные сразу по мере их поступления:
    https://learn.javascript.ru/fetch-progress
    https://developer.mozilla.org/en-US/docs/Web/API/R...
    Не ожидая завершения запроса.
    Ответ написан
    Комментировать
  • Как веб-приложению работать на wi-fi-устройстве, когда сеть иногда исчезает?

    @zkrvndm
    Софт для автоматизации
    Для хранения данных в браузере рекомендую использовать не localSrorage, а специальную обертку localforage:
    https://html5.by/blog/localforage/
    И тогда не придется загонять себя в 4 мегабайта, сможете записывать данных столько, сколько нужно.

    По сайту же, вам по факту надо написать PWA приложение - это такой специальный веб-сайт, который может работать офлайн, без интернета. Подробнее здесь:
    https://yandex.ru/search/?text=%D1%81%D0%BE%D0%B7%...
    Ответ написан
    1 комментарий
  • Почему не работает проверка на наличие класса jquery?

    @zkrvndm
    Софт для автоматизации
    <div class="cityWrapper" onclick="$('.city__dropdown').toggle();"></div>

    jQuery метод .toggle() позволяет отобразить или скрыть выбранные элементы. Если элемент изначально отображается, то он будет скрыт, если элемент скрыт, то он будет отображен.
    Ответ написан
    Комментировать
  • Как можно проще сделать проверку авторизации?

    @zkrvndm
    Софт для автоматизации
    Валидацию желательно делать на стороне сервера. Все эти сообщения о том, что почта или пароль кривые должен выдавать сервер. Потому что скрипты на стороне браузера можно обмануть и отправить вам на сервер абракадабру, которую тот успешно сожрет и подавится, так как валидации на стороне сервера у вас внезапно нет.
    Ответ написан
  • Как визуализировать работу цикла в элементе html?

    @zkrvndm
    Софт для автоматизации
    Так ты хотя бы задержку какую-то задай в цикле:
    window.onload = function () {
    
        let line = document.querySelector('#line');
    
        async function animateLine() {
            let n = 10000;
    
            let step = 100 / n;
            let output_step = 0;
    
    
            for (i = 0; i < n; i++) {
                output_step += step;
                line.style.width = output_step + "%";
                console.log(output_step);
                await new Promise(function(s) { setTimeout(s, 100); }); // Пауза в 100 мс.
            }
        }
        animateLine();
    }
    Ответ написан
    Комментировать
  • Как загрузить картинку через API в виде binary?

    @zkrvndm
    Софт для автоматизации
    Нет, в вашем примере вы получаете base64 представление файла, но это не бинарник. Для получения бинарника попробуйте использовать fread:
    https://php.ru/manual/function.fread.html (пример №2)

    P. S. Вы бы лучше привели цитату с документации, потому что файлы в различных API обычно пересылаются в кодировке multipart/form-data и реже base64-строкой внутри json.
    Ответ написан
  • Как мне сделать валидацию этой формы?

    @zkrvndm
    Софт для автоматизации
    Атрибут pattern и псевдо классы :valid :invalid в помощь.

    htmlbook.ru/html/input/pattern
    https://developer.mozilla.org/ru/docs/Web/CSS/:invalid
    Ответ написан
    Комментировать
  • Как преобразовать curl с параметром --data в fetch с методом get?

    @zkrvndm
    Софт для автоматизации
    Попробуй так:
    (async function() {
    	
    	try {
    		
    		var response = await (await fetch('http://127.0.0.1:8000/api/feed/posts/', {
    			method: 'POST',
    			headers: {
    				'Authorization': 'Token a96a3545bb566272f0fdfb405a0cccb7173da660',
    				'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    			},
    			body: 'page=1'
    		})).text();
    		
    		console.log('Запрос успешно отправлен, ответ сервера:');
    		console.log(response);
    		
    	}
    	
    	catch(err) {
    		
    		console.log('Запрос завершился неудачно, детали ниже:');
    		console.error(err);
    		
    	}
    	
    })();
    Ответ написан
    Комментировать
  • Можно ли на сайте-конструкторе сделать сайт с функционалом социальной сети?

    @zkrvndm
    Софт для автоматизации
    Нельзя. Более того, создание даже самой простой в плане функционала социальной сети обойдется вам в дохрена денег. Это вам только по незнанию кажется, мол что там может быть сложного, но на самом деле объем работ там по программной части колосален.
    Ответ написан
    5 комментариев
  • Как можно сделать такую загрузку файлов?

    @zkrvndm
    Софт для автоматизации
    Заведи массив, при выборе нового файла в этот массив сохраняй выбранный файл. Напишу функцию, которая перебирает массив и отрисовывает изображения - эту функцию вызываешь каждый раз после добавления файла. При нажатии на крестик удаляешь из массива файл и вызываешь эту же функцию.

    Когда придет время отправлять файлы их легко можно отослать при помощи AJAX и new FormData()
    Ответ написан
    Комментировать
  • Async/await в fetch?

    @zkrvndm
    Софт для автоматизации
    Откройте консоль и выполните:
    async function getIp(){
    	
    	// Блок try выполнится полностью, если не будет ошибок:
    	
    	try {
    		
    		// Выполняем первый запрос:
    		
    		var response1 = await (await fetch('https://json.geoiplookup.io/')).json();
    		
    		// Выполняем второй запрос используя данные с первого:
    		
    		var response2 = await (await fetch('https://ipapi.co/'+response1.ip+'/json/')).json();
    		
    		return response2; // Возвращаем результат второго запроса
    		
    	}
    	
    	// Блок catch сработает только если будут какие-то ошибки в блоке try:
    	
    	catch(err) {
    		
    		// Выведем в консоли информацию об ошибке:
    		
    		console.log('При запросе IP произошла ошибка, детали ниже:');
    		console.error(err);
    		
    		// Вернем исключение с текстом поясняющим детали ошибки:
    		
    		throw new Error('Один из запросов завершился неудачно =(');
    		
    	}
    	
    }
    
    // Вызовем функцию:
    
    var info = await getIp();
    
    // Выведем результат:
    
    console.log('Результаты запроса IP ниже:');
    console.dir(info);

    Код раскомментирован, думаю все понятно. Отдельно замечу, что если вы будете вызывать await getIp(); не в консоли, а где-то внутри другой функции, то эта функция обязательна должна иметь приставку async, иначе получите ошибку. Например, вам надо вызывать эту функцию внутри функции test() тогда не забудьте к ней добавить async:
    async function test() {
    	
    	// ... ваш код
    	
    	var info = await getIp();
    	
    	// ... ваш код
    	
    }

    Учебник:
    https://learn.javascript.ru/async-await
    Ответ написан
  • Существует ли аналог Promise.allSettled для jQuery.Deferred?

    @zkrvndm Автор вопроса
    Софт для автоматизации
    Я понял в чем был не прав. В случае с jQuery никаких аналогов Promise.allSettled не нужно никогда.

    Для всех возможных случаев достаточно одного jQuery.when() - просто потому что в эту функцию мы всегда передаем Deferred, а передаваемый Deferred мы всегда можем подрихтовать при помощи jQuery.always() так, чтобы он завершался через deferred.resolve()

    Допустим, нам надо сделать 3 запроса одновременно и получить все результаты, при этом нам не важно успешно завершились запросы или какие-то из них были завершены с ошибкой. Если использовать jQuery.when() в лоб, то разумеется мы не сможем получит все результаты, так как jQuery.when() завершится при получении первого неуспешного результата, проигнорировав все остальные запросы, но если передавать в него немного поправленный Deferred, то никаких проблем с обработкой всех результатов не предвидится:
    // Ссылки:
    
    var urls = [
    	'/link1',
    	'/',
    	'/link3'
    ];
    
    var deferreds = []; // Массив для записи Deferred
    
    // Перебираем ссылки в цикле jQuery:
    
    jQuery.each(urls, function(num, link) {
    	
    	// Создаем новый Deferred и
    	// записываем его наш массив:
    	deferreds.push(jQuery.Deferred());
    	
    	// Отправляем запрос, указав через
    	// always, чтобы после завершения он
    	// успешно завершил созданный ранее Deffered:
    	jQuery.ajax(link).always(deferreds[num].resolve);
    	
    });
    
    
    // Используем when, чтобы дождаться завершения всех Deferred:
    
    jQuery.when.apply($, deferreds).done(function() {
    	
    	// После завершения всех Deferred выведем результаты запросов:
    	
    	console.log('Запросы успешно отправлены, их результаты ниже:');
    	console.dir(arguments);
    	
    });

    Очевидно, что вместо jQuery.ajax может использоваться любая другая функция возвращающая Deferred, т. е. этот принцип можно применять везде и для всего. Конечно промисы применять было бы в удобнее, чем объекты Deferred, но в защиту Deferred скажу, что он может все то же, что и промисы, включая возможность использовать async / await + у него есть некоторые фишки, которых нет у промисов.
    Ответ написан
    Комментировать
  • Как значение из dev поместить в ссылку iframe?

    @zkrvndm
    Софт для автоматизации
    opolo = document.querySelector('#opolo').getAttribute('data-nme');
    iframe = document.querySelector('iframe');
    
    url = new URL(iframe.src);
    url.searchParams.delete('post');
    url.searchParams.append('post',  opolo);
    
    iframe.src = url.href;
    Ответ написан
    3 комментария
  • Как получить данные через proxy?

    @zkrvndm
    Софт для автоматизации
  • Как отправить (submit) все формы на странице?

    @zkrvndm
    Софт для автоматизации
    На jQuery это делается примерно так:
    var deferreds = []; // Массив для записи Deferred
    
    // Перебором отправляем формы, создаем Deferred
    // и добавляем их все в массив который создали выше:
    
    $('form').each(function(num, form) {
    	deferreds.push($.Deferred(function(deferred) {
    		$.ajax({
    			'type': 'POST',
    			'url': form.action,
    			'data': $(form).serialize(),
    			'success': function(data) {
    				deferred.resolve(data);
    			},
    			'error': function(xhr, status) {
    				deferred.resolve(status);
    			}
    		});
    	}));
    });
    
    // По завершению всех Deferred из массива
    // выполняем указанную функцию, в нашем случае
    // тупо выводим в консоли все полученные ответы:
    
    $.when.apply($, deferreds).done(function() {
    	console.log('Формы успешно отправлены, массив результатов ниже:');
    	console.dir(arguments);
    });
    Ответ написан
  • Как заставить обновится iframe вместо родительского окна?

    @zkrvndm
    Софт для автоматизации
    По идее если сменить источник в родительском окне, то фрейм потеряет над ним контроль. Напомните о себе завтра, покажу пример, сейчас уже не за компом.
    Ответ написан
    Комментировать
  • Как открыть ссылку в другом браузере?

    @zkrvndm
    Софт для автоматизации
    Такая возможность есть, если вы зарегистрируете на своем компьютере нужный протокол. Разумеется, работать это будет только у вас.

    https://yandex.ru/search/?text=windows+%D0%B7%D0%B...
    Ответ написан
    5 комментариев
  • Как правильно получать изначальные значения фильтров при работе с localStorage?

    @zkrvndm
    Софт для автоматизации
    Я не понимаю в чем проблема. Это обычная практика, когда выставленные фильтры запоминаются сайтом. Единственный тонкий момент - на забыть добавить кнопку СБРОСИТЬ ФИЛЬТРЫ на видном месте, чтобы даже самый тупой видел, что сейчас стоят фильтры с прошлого визита.
    Ответ написан
    Комментировать
  • Почему если в $.cookie 10 строк - кука очищается?

    @zkrvndm
    Софт для автоматизации
    В куках нельзя хранить больше 4 Кб информации. Для хранения товаров используйте localStorage, там лимит 4 Мб, что в 1000 раз больше, чем у Cookie.
    Ответ написан
    Комментировать