• Можно ли сжать html файлы?

    @zkrvndm
    Софт для автоматизации
    Используйте JSZip для сжатия инфы. Абсолютно ни что вам не мешает запихнуть все 300 ваших страниц в другую страницу в виде блоба Base64, а сам блоб будет архивом созданным при помощи JavaScript-библиотеки JSZip.

    Короче, нынешние веб-технологии вполне позволяют самораспаковывающиеся и самоупаковывабщиеся HTML файлы делать и работать это будет во всех популярных браузерах, даже без интернета.
    Ответ написан
    Комментировать
  • Как объединить объект и строковый путь к свойству этого объекта?

    @zkrvndm
    Софт для автоматизации
    Чисто гипотетически можно использовать eval() и не сильно парится по этому поводу, но сам бы я сделал как - написал бы отдельную функцию, которая получает объект со строковым путем и возвращает уже готовый результат, это было бы правильно. Тем более, что для реализации такой функции достаточно уметь пользоваться методами for() и split() т. е. сама задача не сложная.
    Ответ написан
    2 комментария
  • Как сконвертировать загружаемый файл с помощью input file в html?

    @zkrvndm
    Софт для автоматизации
    Вероятно вы имейте в виду строчное представление файлов в кодировке Base64.

    Да, такая конвертация возможна нативными средствами, подробнее здесь:
    https://learn.javascript.ru/file
    Нужный вам метод называется readAsDataURL.
    Ответ написан
    Комментировать
  • Как прошерстать сайт?

    @zkrvndm
    Софт для автоматизации
    обрабатывать за один запрос десятки тысяч страниц одного сайта

    Ну если у вас достаточно денег, чтобы купить десятки тысяч прокси и минимум пару-тройку топовых физических серверов... то почему нет? Ах да, есть совсем маленький нюанс в виде разработки уникального ПО способного работать с такими объемами, но право слово, это будет герунда на фоне трат выше.
    Ответ написан
    7 комментариев
  • Есть ли сервисы позволяющие сделать аудиосвязь для пользователей сайта?

    @zkrvndm
    Софт для автоматизации
    Это называется WebRTC и для его настройки нужен высокий уровень навыков. Вам для чего вообще это надо? Чтобы организовать общение пользователей или для того, чтобы пользователи могли звонить вам прямо с вашего сайта через интернет?
    Ответ написан
    2 комментария
  • Динамическая загрузка страницы после анимации?

    @zkrvndm
    Софт для автоматизации
    Ниже пример функции для загрузки страниц с плавной анимацией исчезновения и появления:
    async function pageUpdate(event) {
    	
    	// Если функция вызвана без аргументов:
    	
    	if (typeof event == 'undefined') {
    		
    		// Устанавливаем обработчики
    		// на все ссылки на странице:
    		
    		$('a[href]').click(pageUpdate);
    		
    	}
    	
    	// Если функция вызвана
    	// в результате клика
    	// по ссылке:
    	
    	else {
    		
    		// Берём адрес с нажатой ссылки
    		// и записываем в переменную link:
    		
    		var link = event.target.href;
    		
    		// Если ссылка ведет на наш сайт:
    		
    		if (link.includes(location.host)) {
    			
    			// Предотвращаем переход:
    			
    			event.preventDefault();
    			
    			// Блокируем страницу, чтобы
    			// больше нельзя было кликать:
    			$('body').css('pointer-events', 'none');
    			
    			// Активируем анимацию
    			// постепенного исчезновения
    			
    			await $('body').animate({ opacity: 0 }, 1000).promise();
    			
    			// Грущим новую страницу AJAX-ом без
    			// фактиечской перезагрузки текущей:
    			
    			var html = await $.ajax(link);
    			var doc = new DOMParser().parseFromString(html, 'text/html');
    			var html = $('body', doc).html();
    			history.pushState(null, null, link);
    			$('body').html(html);
    			
    			// Заново ставим
    			// обработчики:
    			
    			pageUpdate();
    			
    			// Активируем анимацию
    			// постепенного появления:
    			
    			await $('body').animate({ opacity: 1 }, 1000).promise();
    			
    			// Снимаем блокировку с документа:
    			
    			$('body').css('pointer-events', '');
    			
    		}
    		
    	}
    	
    }
    
    pageUpdate();

    Функция перехватывает клики по ссылкам, добавляет анимацию и обновляет контент страницы без перезагрузки.
    Ответ написан
  • Как в mysql сохранить массив BLOB?

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

    @zkrvndm
    Софт для автоматизации
    Обратите внимание, что в form.append() нужно передавать три параметра, а не два.
    Ответ написан
    1 комментарий
  • Как вернуть значение, а не промис?

    @zkrvndm
    Софт для автоматизации
    Оберните ваш код в асинхронную функцию и уже эту функцию вызывайте, используя await.
    Ответ написан
    1 комментарий
  • Как вывести переменную из jQuery в "глобальную среду"?

    @zkrvndm
    Софт для автоматизации
    Используйте await:
    rezText = await $.get("file.txt");
    console.log(rezText);

    Но помните, что если вы будете вызывать это где-то внутри функции, то такая функция должна иметь приставку async. Подробнее про async / await вы можете узнать погуглив про промисы. Без использования промисов, можно так:
    $.get("file.txt", function(data) {
      window.rezText = data;
      console.log(rezText);
    });

    Переменная rezText будет записана в глобальную область видимости через window.
    Ответ написан
  • Как узнать откуда был отправлен запрос?

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

    @zkrvndm
    Софт для автоматизации
    На самом деле jQuery.ajax() умеет в промисы из под коробки:
    let userList = await $.ajax({ url: 'api.api/users/' });
    console.log(userList);
    Ответ написан
    Комментировать
  • Как подставить значение в post-запрос?

    @zkrvndm
    Софт для автоматизации
    Делайте так:
    <select onchange="getval(this);" name="city" id="city" required>
        <option value="1">один</option>
        <option value="2">два</option>
    </select>

    async function getval(sel) {
    	var city = encodeURIComponent(sel.value);
    	var response = await (await fetch('/city.php?city=' + city)).text();
    	alert("Запрос успешно отправлен, ответ сервера:\n" + response);
    }

    На сервере в своем php-скрипите смотрите содержимое переменной $_GET['city'] там будет лежать город.
    Ответ написан
    Комментировать
  • JavaScript: как складывать вещественные числа без погрешности?

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

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

    @zkrvndm
    Софт для автоматизации
    Пример простейшего таймера с опорой на какую-то конкретную дату:
    var start_date = new Date().getTime() + 11000;
    
    setInterval(function() {
    	
    	var current_date = new Date().getTime();
    	
    	if (start_date > current_date) {
    		
    		var left_date = start_date - current_date;
    		
    		var hours = Math.floor(left_date / 3600000);
    		var minutes = Math.floor((left_date % 3600000) / 60000);
    		var seconds = Math.floor((left_date % 60000) / 1000);
    		
    		var left_time = '';
    		
    		if (hours) {
    			left_time += hours + ' ч. ';
    		}
    		if (minutes) {
    			left_time += minutes + ' м. ';
    		}
    		if (String(seconds).length === 2) {
    			left_time += seconds + ' с.';
    		} else {
    			left_time += '0' + seconds + ' с.';
    		}
    		
    		document.querySelector('body').innerHTML = 'Осталось времени ' + left_time;
    		
    	}
    	
    	else {
    		
    		var elapsed_date = current_date - start_date;
    		
    		var hours = Math.floor(elapsed_date / 3600000);
    		var minutes = Math.floor((elapsed_date % 3600000) / 60000);
    		var seconds = Math.floor((elapsed_date % 60000) / 1000);
    		
    		var elapsed_time = '';
    		
    		if (hours) {
    			elapsed_time += hours + ' ч. ';
    		}
    		if (minutes) {
    			elapsed_time += minutes + ' м. ';
    		}
    		if (String(seconds).length === 2) {
    			elapsed_time += seconds + ' с.';
    		} else {
    			elapsed_time += '0' + seconds + ' с.';
    		}
    		
    		document.querySelector('body').innerHTML = 'Прошло времени ' + elapsed_time;
    		
    	}
    	
    }, 1000);
    Ответ написан
    Комментировать
  • Как вытащить html разметку из другого файла с помощью JS?

    @zkrvndm
    Софт для автоматизации
    Примерно так:
    var html = await (await ('https://ссылка_на_ваш_html_код')).text();
    document.querySelector('селектор_элемента_куда_нужно_вставить').innerHTML = html;
    Ответ написан
    Комментировать
  • Как сохранить canvas в jpg с учетом использования drawImage?

    @zkrvndm
    Софт для автоматизации
    Я тут вижу две возможные причины причины, почему не работает.

    1. У текущего документа и картинки разный источник, т. е. не совпадает протокол/адрес/порт
    2. Картинка не успевает загрузится, нужно немного выждать, чтобы не получать пустоту
    Ответ написан
    9 комментариев
  • Как в google extensions прокинуть переменную на активную вкладку?

    @zkrvndm
    Софт для автоматизации
    В фоновой вкладке выполняйте:
    chrome.tabs.query({}, function(tabs) {
    	for (i = 0; i < tabs.length; i++) {
    		chrome.tabs.sendMessage(tabs[i].id, 'Привет мир!');
    	}
    });

    Во все вкладки будет передано сообщение Привет мир!

    Для получения сообщений на целевой вкладке внутри контент-скрипта ставите обработчик:
    chrome.extension.onMessage.addListener(function(message) {
    	console.log('Получено сообщение: ' + message);
    });

    Разумеется это просто пример, на деле это все нужно допиливать напильником под себя.

    P. S. Если нужно передать сообщение только и исключительно в активную вкладку, то ставите такой фильтр:
    chrome.tabs.query({active: true}, function(tabs) {
    	for (i = 0; i < tabs.length; i++) {
    		chrome.tabs.sendMessage(tabs[i].id, 'Привет мир!');
    	}
    });
    Ответ написан
  • Как обойти капчу при вводе формы?

    @zkrvndm
    Софт для автоматизации
    Используйте рукапчу для разгадки капчи, это стоит копейки и достаточно надёжно.
    Ответ написан
    Комментировать