• Как сбросить пользователю данные кэша?

    @zkrvndm
    Софт для автоматизации
    Если речь CSS/JavaScript и прочих файлах, то достаточно добавить какой-нибудь GET-параметр к ссылкам на сайте.
    Ответ написан
    Комментировать
  • Как быстро переключать proxy?

    @zkrvndm
    Софт для автоматизации
    Создайте папку с именем Proxy, в нём создайте 2 файла.

    Содержимое файла manifest.json должно быть таким:
    {
    	
    	"name" : "Proxy",
    
    	"manifest_version" : 2,
    	 
    	"version" : "1.0",
    		
    	"description" : "Болванка для создания расширения для смены прокси на лету",
    		
    	"permissions" : [ "proxy", "webRequest", "webRequestBlocking", "<all_urls>" ],
    	
    	"background" : { "persistent": true, "scripts": [ "background.js" ] }
    
    }

    Содержимое файла background.js должно быть таким:
    // Функция для установки произвольного http-прокси:
    
    function setProxy(address, port, login, password) {
    	
    	if (typeof address == 'undefined' && typeof port == 'undefined') {
    		
    		chrome.proxy.settings.clear(
    			{},
    			function() {
    				console.log('Настройки прокси успешно удалены');
    			}
    		);
    		
    	}
    	
    	else {
    		
    		if (typeof login == 'undefined' && typeof password == 'undefined') {
    			
    			window.auth = undefined;
    			
    		}
    		
    		else {
    			
    			window.auth = Object.create(null);
    			window.auth['login'] = login;
    			window.auth['password'] = password;
    			
    		}
    		
    		chrome.proxy.settings.set(
    			{
    				value: {
    					mode: 'pac_script',
    					pacScript: {
    						data: 'function FindProxyForURL(url, host) { return "PROXY '+address+':'+port+'";  }'
    					}
    				},
    				scope: 'regular'
    			},
    			function() {
    				console.log('Прокси http://'+address+':'+port+' успешно установлен');
    			}
    		);
    		
    	}
    	
    }
    
    // Автоматиечский ввод логина и пароля, если прокси требует авторизации:
    
    chrome.webRequest.onAuthRequired.addListener(
        function(info, callback) {
            if (info.isProxy && typeof window.auth !== 'undefined') {
    			callback({
    				authCredentials: {
    					username: window.auth['login'],
    					password: window.auth['password']
    				}
    			});
    		}
    		else {
    			callback();
    		}
        },
        { urls: [ '<all_urls>' ] },
        [ 'asyncBlocking' ]
    );
    
    // Обнуление настроек прокси сразу после установки расширения:
    
    chrome.proxy.settings.clear({}, function() {});

    Далее папку Proxy установите в качестве расширения в свой браузер:
    Меню -> Дополнительный инструменты -> Расширения ->
    Режим разработчика -> Загрузить распакованное расширение


    Чтобы поменять прокси в браузере, в консоли фоновой страницы расширения достаточно вызывать функцию setProxy() передав первым параметром адрес прокси, вторым порт, третьим логин, а четвертым пароль. Пример:
    setProxy('185.202.3.118', '65233', 'idle', 'dfgfgfgfdd');

    Чтобы удалить ранее установленный прокси, достаточно вызывать эту же функцию без параметров. И да, работает только с http-прокси, поддержку socks-прокси я не делал, так как в моем проекте это не было нужно.

    Надеюсь вы осознаете, что это просто пример кода для смены прокси в браузере. Разумеется болванку надо переделывать под себя, сделав ему интерфейс, но это уже ваши заботы, бесплатно я это точно не буду делать.
    Ответ написан
    Комментировать
  • Как сделать, чтобы при focus placeholder не исчезал?

    @zkrvndm
    Софт для автоматизации
    Маску надо не в покйсхолдер пихать, а непосредсивенно в value. Загуглите JavaScript плагины для маски телефона, их полно - 100% найдете нужный.
    Ответ написан
    Комментировать
  • Как сделать запрос с сайта в Google Таблицы?

    @zkrvndm
    Софт для автоматизации
    Вот здесь я привел пример, как можно получить данные с Google таблицы в виде объекта:
    Как произвести Вывод данных из Excel в HTML файл?
    Пробуйте, пользуйтесь.
    Ответ написан
    Комментировать
  • Возможно ли закешировать около 1 гб в браузере?

    @zkrvndm
    Софт для автоматизации
    Возможно конечно. Для хранения больших объемов данных в браузерах существует встроенная БД IndexedDB.

    Для работы с ней сначала подключаем специальную библиотеку, которая упрощает ввод и вывод:
    <script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>

    Далее, чтобы сохранить какие-то данные выполняем в консоли браузера:
    result = await localforage.setItem('key', save_data);
    console.log('Данные успешно сохранены:');
    console.dir(result);

    Где в save_data лежат сохраняемые данные, а key это ключ по которому можно было бы получить к ним доступ.

    Из особенностей, в save_data мы можем положить любой тип данных - хоть строку, хоть массив, хоть объект. Да даже файл при желании можно сохранить! При этом нет ограничений по объему хранимых данных, можете хоть сто мегабайт, хоть триста запихнуть - встроенное хранилище все сожрет.

    Чтобы потом извлечь сохраненные данные достаточно выполнить:
    result = await localforage.getItem('key');
    console.log('Данные успешно извлечены:');
    console.dir(result);

    Срок хранения данных - неограниченно. Или пока пользователь вручную не обнулит кеш браузера.

    P. S. Обратите внимание, что если вы где-то в своем коде внутри функции используете слово await, то такая функция обязательно должна иметь приставку async! Иначе получите ошибку. В консоли можно использовать await в лоб, но для использования await в коде нужно, чтобы функция внутри которой она вызывается была асинхронной!!!
    Ответ написан
    4 комментария
  • Где можно хранить js скрипты?

    @zkrvndm
    Софт для автоматизации
    Ответ написан
    Комментировать
  • Как отслеживать removeItem и setItem из localstorage?

    @zkrvndm
    Софт для автоматизации
    Просто напишите свой аналог seItem. Профит!
    Ответ написан
    Комментировать
  • Как на jquery добавить класс только одному вложенному объекту?

    @zkrvndm
    Софт для автоматизации
    Не уверен, но вроде бы в jQuery есть свой аналог this. Попробуйте так:
    $(document).ready(function () {
      $(".block").click(function () {
            $(this).toggleClass("active");
      });
    });
    Ответ написан
    Комментировать
  • Можно ли сделать декстопное приложение на JavaScript?

    @zkrvndm
    Софт для автоматизации
    Да, разумеется можно, при этом для создания веб-приложения php вовсе не нужен. Для того, чтобы упаковать html-страничку с калькулятором в exe-программу используйте Электрон.
    Ответ написан
    Комментировать
  • Как адаптировать таблицу?

    @zkrvndm
    Софт для автоматизации
    Используйте медиазпросы и псевдоэлементы. Посмотрите пример с одного из моих сайтов:
    https://imgural.ru/product/lpu
    Докрутите до таблицы и попробуйте уменьшить ширину окна.
    Ответ написан
    Комментировать
  • Как на php создать систему входящих сообщений?

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

    @zkrvndm
    Софт для автоматизации
    Сделайте картинки блоками и задайте нулевой маргин еще. Я сейчас не с компа, но завтра обязательно гляну и приведу пример.
    Ответ написан
  • Как правильно захардкодить запрос с https на http?

    @zkrvndm
    Софт для автоматизации
    Просто подключите Cloudflate, он умеет проксировать https при обращении к http.
    Ответ написан
  • Как имитировать ввод текста в input чужого сайта на Angular?

    @zkrvndm
    Софт для автоматизации
    После ввода текста на элементе вызовите события:
    $('input')[0].dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
    $('input')[0].dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));
    $('input')[0].dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
    $('input')[0].dispatchEvent(new Event('input', { bubbles: true }));
    $('input')[0].dispatchEvent(new Event('change', { bubbles: true }));
    $('input')[0].dispatchEvent(new Event('blur', { bubbles: true }));

    Это заставит сработать обработчик и страница сможет увидеть изменения.
    Ответ написан
    Комментировать
  • Существует ли такой парсер xml или html?

    @zkrvndm
    Софт для автоматизации
    Такую задачу можно решить на любом языке программирования, но готовых решений вы не найдете, надо писать самому. Сам бы я написал такой парсер на JavaScript и тупо оформил его в виде небольшого локального html-файла: открыл этот файлик в браузере, подцепил в поле input type="file" папку из диска, а дальше JavaScript-ом читаем все файлы из выбранной папки и распарсиваем при помощи new DOMParser().

    Почему именно JavaScript, а не php или python? Просто JavaScript самый идеальный язык для парсинга html. Там из под коробки есть богатейший набор инструментов для работы с html-кодом, ни один другой язык так хорошо не умеет работать с html, как JavaScript - ведь он буквально создан для этого.
    Ответ написан
    Комментировать
  • Где почитать про создание страницы по id?

    @zkrvndm
    Софт для автоматизации
    Загуглите что такое php-роутер и как написать его самому. Роутер это именно то, что вам нужно, для решения задачи.
    Ответ написан
    Комментировать
  • Какие есть библиотеки для расшифровки BLOB?

    @zkrvndm
    Софт для автоматизации
    Blob - не нужно расшифровывать, это и есть сам файл. На стороне браузера Blob можно передать на ваш сервер обычным POST-запросом - при этом на сервер он уже поступит как обычный файл, ничем не отличающийся от любого другого файла, отправленного через реальную форму.
    Ответ написан
  • Как создать HTML элемент с помощью JS и вставить в него переменную?

    @zkrvndm
    Софт для автоматизации
    Нужно экранировать переменную просто:
    element.innerHTML = '<div>'+peremenaya+'</div>';
    Ответ написан
    2 комментария
  • Как вернуть json из fetch конструкции?

    @zkrvndm
    Софт для автоматизации
    Примерно вот так:
    async function translate() {
    	var response = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&hl=ru&dt=t&dt=bd&dj=1&source=icon&tk=467103.467103&q=привет');
    	var obj = await response.json();
    	return obj;
    }
    
    console.log(await translate());

    Вместо промисов всегда лучше использовать async / await, так как с ними код короче на порядок.
    И да, у меня ни одной ошибки, все работает.
    Ответ написан