• Как отключить обработчик событий jQuery?

    @zkrvndm
    Софт для автоматизации
    Попробуйте так:
    $('.delivery__tabs p').bind('click', function() {
        if (typeof delivery_tabs_p == 'undefined' ) {
            console.log('Обработчик работает');
        }
    });

    Пока переменная delivery_tabs_p не существует, обработчик работает.

    Чтобы отключить обработчик, достаточно записать в переменную что-нибудь:
    delivery_tabs_p = '1';
    Понимаю, решение так себе, но зато можно не вникать, почему там обработчик не отменяется у вас.
    Ответ написан
    Комментировать
  • Как ввести значение в input со значением autocomplete="off"?

    @zkrvndm
    Софт для автоматизации
    В консоли выполните:
    document.querySelector('#card').value = 'Вставляемый текст';
    Ответ написан
    7 комментариев
  • Как в iframe сделать чтобы человек был авторизованным Instagram?

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

    @zkrvndm
    Софт для автоматизации
    Проксируйте запрос через свой сервер. В корне своего сайта создайте файл proxy.php с таким содержимым:
    <?php
    
    header('Access-Control-Allow-Origin: *'); // Разрешаем запросы с любых доменов
    header('Content-Type: application/json; charset=utf-8'); // Указываем тип документа и кодировку
    
    // Скачиваем данные по ссылке:
    $json = file_get_contents('https://www.supremenewyork.com/mobile_stock.json');
    echo $json; // Выводим данные

    Далее, уже в браузере обращайтесь по адресу http://localhost/proxy.php если нужно получить JSON.
    Ответ написан
    Комментировать
  • Как имитировать ручной ввод в input js?

    @zkrvndm
    Софт для автоматизации
    Попробуйте так:
    input = document.querySelector('#my');
    input.value = 'Вставляемый текст';
    input.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
    input.dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));
    input.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
    input.dispatchEvent(new Event('input', { bubbles: true }));
    input.dispatchEvent(new Event('change', { bubbles: true }));
    Ответ написан
    2 комментария
  • Получить письмо без цитирования?

    @zkrvndm
    Софт для автоматизации
    Лично я бы банально использовал phpquery для парсинга письма и разбора на элементы. Цитаты с большой вероятностью пойдут на вложенных элементах и их можно будет отсечь.
    Ответ написан
    Комментировать
  • Как произвести Вывод данных из Excel в HTML файл?

    @zkrvndm
    Софт для автоматизации
    Если у вас сайт на php, то создаёте в корне файл test.php такого содержания:
    spoiler
    <?php
    
    header('Access-Control-Allow-Origin: *');
    
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=archive.zip');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    
    echo file_get_contents('https://docs.google.com/spreadsheets/d/1LCPXEorv3x5YYiikpciI0A2YaPNB41Epn-9JKMdW94/export?format=zip');

    Ссылку на экспорт таблицы разумеется заменяете на свою! Допустим у вас есть ссылка на Google таблицу:
    https://docs.google.com/spreadsheets/d/1LCPXEorv3x5YYiikpciI0A2YaPNB41Epn-9JKMdW94/edit

    Вам нужно в конце поменять edit на export?format=zip чтобы получилось:
    https://docs.google.com/spreadsheets/d/1LCPXEorv3x5YYiikpciI0A2YaPNB41Epn-9JKMdW94/export?format=zip

    Если вы перейдете по такой ссылке, то увидите, что вам отдаётся zip-архив внутри которого лежат html-файлы. Соответственно, задача далее сводится к тому, чтобы распаковать полученный zip-архив и спарсить html-файлы.

    Чтобы спарсить информацию, на самом сайте перед закрывающим тегом </head> вставляйте:
    spoiler
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.js"></script>
    
    <script type="text/javascript"> 
    
    	// Функция для парсинга Google таблицы:
    
    	async function googleTableParse() {
    		
    		var response = await fetch('/test.php');
    		var zip = await response.blob();
    		var archive = await new JSZip().loadAsync(zip);
    		var files = Object.keys(archive.files);
    		var lists = Object.create(null);
    		for (var n = 0; n < files.length; n++) {
    			if (!files[n].includes('/') && files[n].includes('.html')) {
    				var blob = await archive.files[files[n]].async('blob');
    				var html = await blob.text();
    				var name = files[n].replace(/\.html$/g, '');
    				lists[name] = tableParser(html);
    			}
    		}
    		
    		return lists;
    		
    	}
    
    	// Функция для парсинга html-кода таблицы:
    
    	function tableParser(html) {
    		
    		var doc = new DOMParser().parseFromString(html, "text/html");
    		
    		var th = doc.querySelector('table > tbody > tr').querySelectorAll('th, td');
    
    		var title = [];
    
    		for (var i = 0; i < th.length; i++) {
    
    			title.push(th[i].innerText);
    
    		}
    		
    		var tr = doc.querySelectorAll('table > tbody > tr');
    		
    		var array = [];
    		
    		for (var i = 1; i < tr.length; i++) {
    
    			var td = tr[i].querySelectorAll('th, td');
    			
    			var obj = {};
    			var add = 0;
    			
    			for (var y = 1; y < td.length; y++) {
    				
    				td[y].innerHTML = td[y].innerHTML.replace(/\<br\>/g, '{перенос строки}');
    				obj[title[y]] = td[y].innerText.replace(/\{перенос строки\}/g, "\n").trim();
    				if (obj[title[y]] !== '') {
    					add = 1;
    				}
    				
    			}
    			
    			if (add) {
    				array.push(obj);
    			}
    
    		}
    		
    		return array;
    		
    	}
    
    </script>


    Далее заходите на свой сайт, открываете консоль и в целях теста выполняете:
    test = await googleTableParse();
    Если в переменную test упал объект с данными, значит все в порядке, можете пользоваться.
    Ответ написан
    2 комментария
  • Как запретить прокрутку body до конца?

    @zkrvndm
    Софт для автоматизации
    Примерно так:
    window.addEventListener('scroll', function() {
    	var bottom = document.body.scrollHeight - window.innerHeight - pageYOffset;
    	if (bottom < 150) {
    		var fix = document.body.scrollHeight - window.innerHeight - 150;
    		window.scrollTo(0, fix);
    	}
    });

    Не уверен правда, будет ли это работать на смартфонах, но на ПК должно.
    Ответ написан
  • Как отправить, созданное пользователем изображение, на сервер с помощью js, ajax или fetch()?

    @zkrvndm
    Софт для автоматизации
    Я уже отвечал на похожий вопрос. Вот здесь в ответах приведена функция для отправки блобов на сервер:
    Как получить audio файл с сайта?

    Если же дело касается изображений, то дополнительно изучите как получить Blob при помощи Canvas:
    https://learn.javascript.ru/blob#izobrazhenie-v-blob
    Ответ написан
  • Как получить ip адрес с формы на сайте в телеграм чат?

    @zkrvndm
    Софт для автоматизации
    Очевидно, как-то так:
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $args = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
      if (!empty($args['uname'])){
        $arr = [
          "Заявка"=>$args['utheme'],
          "Имя"=>!empty($args['uname']) ? $args['uname'] : '',
          "Телефон: "=>!empty($args['uphone']) ? $args['uphone'] : '',
          "IP адрес:" => $_SERVER['REMOTE_ADDR'] 
        ];
        $token = "";
        $chat_id = "";
        $txt="";
        foreach($arr as $key => $value) {
          $txt .= "<b>".$key."</b> ".$value."%0A";
        };
        $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
        if ($sendToTelegram) {
          echo '<p class="success">Ваша заявка принята.</p>';
          return true;
        } else {
          echo '<p class="fail"><b>Ошибка.</b></p>';
        }
      } else {
        echo '<p class="fail">Ошибка. Заполните обязательные поля.</p>';
      }
    } else {
      header ("Location: /");
    }
    Ответ написан
    2 комментария
  • Можно ли удалить *.js?

    @zkrvndm
    Софт для автоматизации
    Конечно можно. Все глобально объявленные функции доступны через window и разумеется их можно перезаписать / удалить, после того, как они отработают свою задачу. Я это так вижу - выполняем функции, а под конец стираем сам скрипт со страницы + объявленные в скрипте функции перезаписываем, как undefined.
    window.functionName = undefined; // где functionName - это имя стираемой функции
    Ответ написан
    1 комментарий
  • Перехватить изменение переменных?

    @zkrvndm
    Софт для автоматизации
    При совершении покупки JavaScript-ом парсите имя и фамилию, сохраняете их в localStorage.
    Далее, если пользователь вдруг захочет зарегистрироваться, вытаскивайте инфу из памяти и подставляйте в форму.
    Ответ написан
    5 комментариев
  • Как выполнять функцию PHP раз в 3 секунды?

    @zkrvndm
    Софт для автоматизации
    Из браузера каждые 3 секунды шлете запрос на свой сервер, а уже на стороне сервера ваш php-скрипт должен будет по API получить данные, записать их в базу и отдать результат в браузер. Частоту запросов к API имеет смысл ограничить, например если с момента прошлого запроса прошло менее секунды, то берем результат из базы, не делая никаких дополнительных запросов на внешнее API - это чтобы вас не забанили за слишком частые запросы.
    Ответ написан
  • Как вставить в js многострочный html код?

    @zkrvndm
    Софт для автоматизации
    Я обычно делаю так:
    var test = '<div>'+
    	'text'+
    	'<div>'+
    		'text2'+
    	'</div>'+
    '</div>';
    
    $('div').append(test);

    Пример на более сложной разметке:
    5f8459bc9d098138730381.png
    P. S. Я этого не знал, но еще оказывается можно использовать ` в качестве кавычек, это наверное наилучший вариант:
    var test = `
    <div>
        text
        <div>
            text2
        </div>
    </div>
    `;
    
    $('div').append(test);
    Ответ написан
    Комментировать
  • Методы отправки данных формы на почту?

    @zkrvndm
    Софт для автоматизации
    Мне нравится вот этот небольшой класс:
    https://vk-book.ru/novaya-versiya-klassa-sendmails...
    Ответ написан
    Комментировать
  • Как сделать отложенную загрузку для видео в теге video?

    @zkrvndm
    Софт для автоматизации
    Примерно так:
    <div onclick="this.querySelector('source').setAttribute('src', this.querySelector('source').getAttribute('data-src')); this.removeAttribute('onclick');" class="video-block">
        <video id="my-player" class="video-js" controls data-setup='{}'>
            <source data-src="./video/blum/2.mp4" type="video/mp4"></source> 
        </video>
    </div>

    При клике, будет добавлен атрибут src, содержимое которого взято был бы из data-src. Это простой вариант в лоб, но это конечно несколько неправильно, по уму все скрипты надо вынести во вне, а не писать инлайново.
    Ответ написан
    3 комментария
  • Подключение внешнего файла только на нужных url?

    @zkrvndm
    Софт для автоматизации
    <?php
      if ($_SERVER["REQUEST_URI"] == "/filter/") {
        require_once $_SERVER["DOCUMENT_ROOT"]."/filter/33.php";
      }
    ?>
    Ответ написан
    2 комментария
  • Платежки с ВЫВОДОМ денег?

    @zkrvndm
    Софт для автоматизации
    Чем вам Яндекс не устраивает? У Яндекс.Денег есть API по которому можно совершать переводы куда хочешь.
    Ответ написан
  • В JavaScript. Как сконвертировать объект в виде строки в сам объект?

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

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