• Можно ли создать сайт только на JavaScript?

    @zkrvndm
    Софт для автоматизации
    Разумеется можно) Но данные которыми оперирует JavaScript нужно где-то хранить.

    Вариантов тут два:
    1. Поднять свой собственный сервер на NodeJS и там организовать API для доступа к данным
    2. Использовать готовы сервисы, которые предоставляют вам свое собственное API за умеренную плату:
    JAMstack — подход для создания статических сайтов. Он включает в себя JavaScript, API и разметку. При использовании такого подхода, разработчики используют JavaScript для взаимодействия пользователя с контентом, API в качестве источника информации.... Метод отличается от традиционного применения CMS отсутствием необходимости задействовать веб-сервер для фронтенда.
    Ответ написан
    Комментировать
  • Как с jQuery метод .clone(true) переписать на чистый JS?

    @zkrvndm
    Софт для автоматизации
    Попробуйте так:
    var clone = document.querySelector('selector').cloneNode(true);
    document.body.appnedChild(clone);

    Скопирует и вставит в конце страницы элемент с указанный селектором.
    Ответ написан
  • Как сохранить/передать файлы куки через iframe на сайт сделанный на tilda?

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

    @zkrvndm
    Софт для автоматизации
    Попробуйте мой вариант:
    // Функция для преобразования объекта
    // в строку формата x-www-form-urlencoded:
    
    function httpBuildQuery(object_to_convert) {
    	
    	var params = new URLSearchParams();
    	
    	var paramsGenerator = function(parent_key, iterate_object) {
    		
    		for (var current_key in iterate_object) {
    			
    			if (typeof iterate_object[current_key] == 'string' || typeof iterate_object[current_key] == 'number') {
    				
    				if (parent_key.length > 0) {
    					var property_path = parent_key + '[' + current_key + ']';
    				} else {
    					var property_path = current_key;
    				}
    				
    				params.append(property_path, iterate_object[current_key]);
    				
    			} else if (typeof iterate_object[current_key] == 'object') {
    				
    				if (parent_key.length > 0) {
    					var property_path = parent_key + '[' + current_key + ']';
    				} else {
    					var property_path = current_key;
    				}
    				
    				paramsGenerator(property_path, iterate_object[current_key]);
    				
    			}
    			
    		}
    		
    	}
    	
    	paramsGenerator('', object_to_convert);
    	
    	return params.toString();
    	
    }
    
    // Протестируем работу функции на примере:
    
    var test_object = {
    	'raz' : 'Первое свойство',
    	'dva' : 'Второе свойство',
    	'tri' : {
    		'test' : 'Тест',
    		'proverka' : 'Проверка',
    		'massiv' : [
    			'aaa',
    			'bbb',
    			'ccc',
    			{
    				'lalala' : 'lololo',
    				'tratata' : 'trototo'
    			},
    			123,
    			345,
    			567
    		]
    	}
    };
    
    var send_string = httpBuildQuery(test_object);
    
    var response = await (await fetch('/NewAdvert', {
    	method: 'POST',
    	headers: {
    		'Content-Type' : 'application/x-www-form-urlencoded'
    	},
    	body: send_string
    })).text();
    
    console.log(response);

    Вставьте это в консоли.
    Ответ написан
    Комментировать
  • Как правильно слушать порт в расширении хрома?

    @zkrvndm
    Софт для автоматизации
    Каждую секунду отправляйте из контент-скрипта сообщение в фоновый процесс:
    chrome.extension.sendMessage('Ваше сообщение');

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

    Если связь с определенной вкладкой потеряна, пересоздаете его или обновляйте.

    P. S. Существуют и иные способы предотвратить заморозку вкладки, если интересно, расскажу.
    Ответ написан
  • Есть ли сервисы для сохранения файлов для сайта?

    @zkrvndm
    Софт для автоматизации
    У Beget есть бесплатный хостинг.
    Ответ написан
    Комментировать
  • Через что лучше отправлять форму обратной связи?

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

    @zkrvndm
    Софт для автоматизации
    Загуглите про CORS. Если коротко, то сайт с которого вы запрашивайте данные должен явным образом дать разрешение на чтение ответа, иначе будет ошибка CORS. Разрешение дается посредством добавления заголовка Access-Control-Allow-Origin к ответу, вы должны модифицировать код на стороне своего сайта таким образом, чтобы он добавлял к своему ответу этот заголовок.

    https://yandex.ru/search/?text=Access-Control-Allo...
    Ответ написан
  • Почему не работает MutationObserver?

    @zkrvndm
    Софт для автоматизации
    Ставьте наблюдателя уровнем выше, либо вовсе цепляйте на body.
    Ответ написан
    Комментировать
  • Как загрузить видео по url у input[type="file"]?

    @zkrvndm
    Софт для автоматизации
    Набросал вам небольшую функцию для вставки файла в поле по ссылке:
    // Функция для вставки файла в поле input:
    
    async function setFile(input, name, url) {
    	try {
    		var blob = await (await fetch(url)).blob();
    		var dt  = new DataTransfer();
    		dt.items.add(new File([blob], name, {type: blob.type}));
    		input.files = dt.files;
    		console.log('Файл успешно вставлен:');
    		console.dir(input.files);
    		return true;
    	}
    	catch(err) {
    		console.log('Ошибка при вставке файла:');
    		console.dir(err);
    		return false;
    	}
    }

    Первым параметром в функцию передаёте ссылку на само поле, вторым параметром желаемое название для файла, а третьим параметром ссылку на файл. Например:
    // Входные параметры:
    var input_element = document.querySelector('input[type="file"]');
    var file_name = 'Мое музло.mp3';
    var file_link = 'https://ваш-сайт.рф/music.mp3';
    
    // Вызовем функцию для вставки файла:
    setFile(input_element, file_name, file_link);

    Работать это будет при условии, что файл находится на том же домене, что и форма с полем. Иными словами, бесполезно вставлять ссылки на сторонние сайты! Поэтому прежде чем вставлять видео, озаботьтесь тем, что загрузить это видео на свой сайт.

    Дополнительная информация
    Также вместе третьего параметра можно передавать не ссылку на файл, а уже сам файл в представлении base64 - это когда файл конвертируется в длинный-длинный зашифрованный текст. Чтобы перегнать какой-нибудь файл в base64, вы можете использовать онлайн сервисы, вам наверное так будет проще всего.

    Только зачем так заморачиваться, если можно просто положить файл внутри своего сайта и при вставке банально указывать ссылку на него?
    Ответ написан
    8 комментариев
  • Какой язык проще использовать для парсинга данных?

    @zkrvndm
    Софт для автоматизации
    Рекомендую JavaScript.

    1. У него низкий порог входа, наиболее простой из языков программирования
    2. Код можно запускать сразу в браузере, открываем консоль браузера, вставляем написанный код и готово, он запустится сразу на том сайте, где ты находишься
    3. И наверное самое главное, это то, что консоль браузера помогает писать тебе код и в случае ошибок явным образом указывает, где именно ты ошибся

    В случае если писать код не получается, попробуйте зеннопостер, он вообще не требует навыков программирования, тупо в визуальном режиме все работает.
    Ответ написан
    Комментировать
  • Как переписать XMLHttpRequest в fetch?

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

    Пример простого GET-запроса на fetch:
    async function get() {
      var response = await (await fetch('https://test-test.com/sub?channel=system:fb:advc')).json();
      console.dir(response);
    }

    Просто вызовите функцию get()

    P. S. Обработку ошибок делайте через try / catch.
    Ответ написан
    Комментировать
  • Как отредактировать doc/docx на PHP?

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

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

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

    @zkrvndm
    Софт для автоматизации
    Это делается намного проще. Вот пример, вставь его в консоли:
    async function getFile(link) {
        var blob = await (await fetch(link)).blob();
        var file = new File([blob], link.replace(/^.*\//g, ''), {type: blob.type});
        return file;
    }
    
    fff = await getFile('./image-name.png');
    console.log('Файл скачан:');
    console.dir(fff);

    Предполагается, что ты знаешь что такое асинхронные функции, так как пример выше надо существенно дорабатывать, чтобы предусмотреть ошибки.
    Ответ написан
    Комментировать
  • Как заглянуть "под капот" JavaScript?

    @zkrvndm
    Софт для автоматизации
    Ищите информацию про протопы, в JavaScript все построено на них. Как реализован .toUpperCase() посмотреть через прототипы нельзя, но можно через прототипы изменить сам метод, написав что-то свое, т. е. переписать методы вы вполне можете.

    https://learn.javascript.ru/native-prototypes

    Кстати, существует атаки использующую это особенность JavaScript.

    https://habr.com/ru/company/huawei/blog/547178/
    Ответ написан
    Комментировать
  • На чем исполнять несложный интернет-магазин?

    @zkrvndm
    Софт для автоматизации
    Рекомендую взять Moguta Витрина, она бесплатна у нее очень удобная админка.
    Ответ написан
    Комментировать
  • Как очистить localStorage после закрытия всех вкладок с сайтом?

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

    P. S. Это лишь один из способов. Также вы можете использовать sessionStorage.
    Ответ написан
    Комментировать
  • Почему сайт в iframe грузится по http, хотя стоит https?

    @zkrvndm
    Софт для автоматизации
    Ты пытаешься на https сайте подгрузить фрейм с http сайтом, а так нельзя.
    Ответ написан
    6 комментариев