• Как получить значение select после загрузки страницы?

    @zkrvndm
    Софт для автоматизации
    Если в select уже установлено значение, то это значение сразу после загрузки страницы можно получить так:
    $(window).on('load', function() {
        console.log('Значение:', $('#country-list').val());
    });
    Ответ написан
    Комментировать
  • Можно ли округлить число в CSS или какой костыль можно придумать?

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

    @zkrvndm
    Софт для автоматизации
    Используй ChatGPT как репетитора.
    Ответ написан
    Комментировать
  • Как отключить повторное сжатие ответа CURL?

    @zkrvndm
    Софт для автоматизации
    Ну так укажи кодировку ответа, чтобы расжать: curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
    Ответ написан
  • Браузерное расширение перестает работать после перезагрузки страницы?

    @zkrvndm
    Софт для автоматизации
    Ты похоже не понимаешь, как работает content.js

    Скрипт content.js запускается по новой всякий раз, когда страница обновляется.

    На реакте этого не происходит лишь потому, что реакт грузит контент без обновления страницы.
    Ответ написан
    Комментировать
  • Есть ли бесплатные аналоги плагина introjs.com?

    @zkrvndm
    Софт для автоматизации
    Ответ предоставлен чат-ботом https://claude.ai

    Да, существуют бесплатные аналоги плагина Intro.js для создания обучающих подсказок на сайте. Вот несколько вариантов:

    1) Driver.js - простой в использовании JS плагин с открытым исходным кодом. Позволяет создавать подсказки и обучающие туры по сайту.

    2) Hopscotch - еще одна библиотека для создания подсказок с открытым кодом. Легко настраиваемая и кастомизируемая.

    3) Joyride - плагин на jQuery для пошаговых инструкций по сайту. Прост в интеграции.

    4) Tourist.js - реализует подсказки в стиле попапов с подсветкой элементов. Небольшой размер.

    5) Bootstrap Tour - создан на основе популярного фреймворка Bootstrap. Интуитивно понятный интерфейс.

    Посмотрите демо этих плагинов, выберите понравившийся по функционалу и простоте использования. Для быстрого старта оптимально подойдут Driver.js или Hopscotch. Удачи!


    P. S. Пользуйтесь поиском или чат ботами прежде, чем спрашивать что-то очевидное!
    Ответ написан
    1 комментарий
  • От чего зависит :valid в css?

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

    @zkrvndm Автор вопроса
    Софт для автоматизации
    Всем спасибо, самостоятельно нашел ответ. Оказывается дейтсвительно существует API для доступа к пометкам:
    PDFViewerApplication.pdfDocument.annotationStorage.getAll(); // Вытащит все аннотации из текущего документа
    PDFViewerApplication.pdfDocument.annotationStorage.setAll(); // Запишет аннотации в документ (или хранилище?)

    Правда это в текущем виде мне вряд ли подойдет, так как это все не сериализованные данные, буду копать дальше.
    Ответ написан
    Комментировать
  • Как правильно в php принять массив из formData js?

    @zkrvndm
    Софт для автоматизации
    Если ты отправляешь не файлы, то нет смысла использовать FormData, просто отправляй JSON-строку напрямую.

    let xhr = new XMLHttpRequest();
    
    xhr.open('POST', 'mail.php', true);
    
    xhr.setRequestHeader('Content-Type', 'text/plain');
    
    xhr.onreadystatechange = function() {
    
        if (xhr.readyState === 4) {
    
            if (xhr.status === 200) {
    
                console.log('Ответ сервера:', xhr.responseText);
    
            }
    
        }
    
    }
    
    console.log('Отправляем:', array);
    
    xhr.send(JSON.stringify(array));


    На стороне PHP принимаешь данные так:
    <?php
    
    header('Content-Type: text/plain');
    
    $array = json_decode(file_get_contents('php://input'), true);
    
    echo 'Из браузера получены данные: ' . print_r($array, true);
    Ответ написан
  • Как получить соседние элементы?

    @zkrvndm
    Софт для автоматизации
    Это нативный аналог jQuery метода siblings:
    https://basicweb.ru/jquery/jquery_method_siblings.php
    Находит все соседние (смежные) элементы, кроме самого элемента.
    Ответ написан
    Комментировать
  • Как найти на странице все элементы имеющие заданные стили на чистом jQuery?

    @zkrvndm
    Софт для автоматизации
    Конечно можно. В jQuery имеется встроенный метод .filter, который фильтрует найденные элементы по заданному условию, также в jQuery есть метод .css который позволяет узнать то или иное свойство у элемента, итого, объединив 2 этих метода получим то, что вам нужно. Вот пример, найдем все абзацы имеющие строго черный цвет:
    $('p').filter(function(n, el) { return $(el).css('color') == 'rgb(0, 0, 0)'; });

    Разумеется вместо абзацев можно искать что угодно, просто поставьте звездочку, а свойства можно сравнивать любые.
    Ответ написан
    Комментировать
  • Почему в $_FILE может передаваться только один, последний файлы из прикрепленных в input?

    @zkrvndm
    Софт для автоматизации
    Не $_FILE надо использовать, а надо использовать $_FILES
    https://snipp.ru/php/files-array
    Ответ написан
    Комментировать
  • Promise executor, почему нельзя уловить ошибку внутри executor с помощью try-catch?

    @zkrvndm
    Софт для автоматизации
    Ну так правильно ошибку выбрасывай, ты должен разрешить промис ошибкой, тогда она выбросится:
    try {
      new Promise((success, error) => {
        console.log('run promise')
        error('custom error');
      });
    } catch(err) {
      console.error(err)
    }
    
    console.log('after test')
    Ответ написан
  • Как выполнить ajax запрос, только когда вкладка барузера открыта?

    @zkrvndm
    Софт для автоматизации
    https://htmlweb.ru/java/example/active_page.php - гуглите прежде чем спрашивать
    Ответ написан
    Комментировать
  • Почему не передается параметр Referrer-Policy?

    @zkrvndm
    Софт для автоматизации
    <?php
    
    $uid = $_GET['uid'];
    
    $redirectUrl = "https://oplata.qiwi.com/form/?invoice_uid=" . $uid;
    
    header("Referrer-Policy: no-referrer-when-downgrade");
    
    header("Location: " . $redirectUrl);
    Ответ написан
    Комментировать
  • Как в Firefox открывать стартовую страницу в popup?

    @zkrvndm Автор вопроса
    Софт для автоматизации
    Мое решение:
    (async () => {
    	
    	var url = new URL(browser.runtime.getURL('start.html'));
    	url.searchParams.set('time', new Date().getTime());
    	
    	var new_window = await browser.windows.create({
    		'url': url.href,
    		'type': 'popup',
    		'focused': true
    	});
    	
    	var windows = await browser.windows.getAll();
    	
    	for (var i = 0; i < windows.length; i++) {
    		
    		if (windows[i].id != new_window.id) {
    			
    			await browser.windows.remove(windows[i].id);
    			
    		}
    		
    	}
    	
    	console.log('Приложение открыто');
    	
    })();

    Это код для background.js, который при запуске браузера создаст popup без элементов управления.

    Если вам известны какие-то другие варианты, то с удовольствием бы почитал.
    Ответ написан
    Комментировать
  • Как выполнить авто установку временного дополнения при запуске Firefox?

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

    Вот инструкция, как установить расширение из папки так, чтобы оно НЕ удалялось при закрытии браузера.

    1. Нужен портативный Firefox редакции Developer:
    https://portableapps.com/apps/internet/firefox-dev...
    Нужен он по той простой причине, что в обычный Firefox неподписанные расширения ставит нельзя.

    2. Дальше надо разрешить установку не подписанных разрешений, для этого перейдите в about:config, там найдите xpinstall.signatures.required и выключите.

    3. Запакуйте ваш расширение в zip архив без сжатия, убедитесь, что в манифесте имеется обязательный пункт:
    "applications": {
    	"gecko": {
    	  "id": "YouExtension@Name",
    	  "strict_min_version": "111.0"
    	}
    }

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

    4. После успешной установки расширения, идем в папку \Data\profile\extensions, там находим xpi файл с именем расширения, типа такого YouExtension@Name.xpi - распаковываем этот архив в папку с именем YouExtension@Name там же рядом, а сам xpi удаляем.

    5. Готово! Перезапускаем браузер, теперь расширение грузится из папки \Data\profile\extensions\YouExtension@Name - вы можете редактировать файлы расширения в режиме реального времени, без необходимости переустанавливать расширение.
    Ответ написан
    Комментировать
  • Почему не открываются файлы сайта на хосте beget?

    @zkrvndm
    Софт для автоматизации
    Права на файл смотри.
    Ответ написан
    Комментировать
  • Как узнать свойства страницы с которой пришёл ajax запрос?

    @zkrvndm
    Софт для автоматизации
    мне например нужен заголовок страницы

    Тогда вам заголовок страницы изначально нужно передавать вместе с теми данными, что вы передаете. Вариантов это сделать масса, например можно добавить к имеющейся форме дополнительное невидимое поле с заголовком.
    <script>
    	$(function() {
    		var input = $('<input>');
    		input.attr('type', 'hidden');
    		input.attr('name', 'title');
    		input.val($('title').text());
    		$('form#test').append(input);
    	});
    </script>

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

    @zkrvndm
    Софт для автоматизации
    Просто подключи Cloudflare, он автоматом минифицирует CSS и JavaScript код + сжимает изображения. Бонусом получишь защиту сайта от атак. У них есть бесплатный тариф, пробуй.
    Ответ написан
    Комментировать