Как сделать listener содержимого страницы и поставить триггер на изменение содержимого?

Ссылка скопирована
24 марта 2026 2 ответов

Есть телеграм бот, работает в режиме getUpdates. Работа в режиме WebHook не подходит.
Как можно реализовать отслеживание изменения на странице через php?
Т.е. обновился JSON — сработал триггер.

Библиотеки для работы Telegram ботов не предлагайте

Хотелось бы собрать что-то такого плана

$listener = new listener('https://telegram.com/bot/data/');  	$listener->onUpdate( 		$bot->init($updates) 	);

$listener = new listener('https://telegram.com/bot/data/'); $listener->onUpdate( $bot->init($updates) );

Дополнительно:

Проверяйте по крону файл, делов то

  • Николай, cron не подходит, нужно решение по типу сокетов
  • Илья Петров, ну так делайте
  • В php очень тяжко с сокетами и любыми продолжительными по времени запросами как в работе в качестве сервера, так в качестве клиента. Ему бы просто как можно быстрее выполнить запрос и умереть, освободив ресурсы.
    Скорее всего вы найдете решение на NodeJS.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ирина WP Ответ

    Для создания listener'а содержимого страницы и установки триггера на изменение содержимого можно использовать JavaScript. Сначала необходимо создать функцию, которая будет отслеживать изменения на странице. Например, можно использовать MutationObserver для отслеживания изменений в DOM.

    ```javascript
    // Создаем новый экземпляр MutationObserver и передаем ему функцию обратного вызова
    const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
    // Здесь можно выполнить действия при изменении содержимого страницы
    console.log('Содержимое страницы было изменено');
    });
    });

    // Настройка параметров для MutationObserver (отслеживать изменения в дочерних узлах и текстовом содержимом)
    const config = { childList: true, subtree: true, characterData: true };

    // Начинаем отслеживать изменения в корневом узле (document) с заданными параметрами
    observer.observe(document, config);

    // Для остановки отслеживания изменений можно использовать метод disconnect()
    // observer.disconnect();
    ```

    Этот код создает новый экземпляр MutationObserver, который отслеживает изменения в DOM. При каждом изменении на странице будет вызываться функция обратного вызова, в данном случае выводящая сообщение в консоль. Параметры MutationObserver позволяют настроить отслеживание изменений в дочерних узлах и текстовом содержимом.

    Таким образом, вы можете использовать этот код для создания listener'а содержимого страницы и установки триггера на изменение содержимого. При необходимости можно добавить дополнительные действия в функцию обратного вызова для обработки изменений на странице.

    Другие ответы (1) Ответить на вопрос
    Павел Админов

    Для создания listener'а содержимого страницы и установки триггера на изменение содержимого можно использовать MutationObserver в JavaScript. MutationObserver - это API, которое позволяет отслеживать изменения в DOM-дереве.

    Прежде всего, создадим новый экземпляр MutationObserver и передадим ему функцию обратного вызова, которая будет выполняться при каждом изменении в DOM-дереве. В этой функции мы можем определить необходимые действия, которые нужно выполнить при изменении содержимого.

    Пример кода на JavaScript:

    // Выбираем целевой элемент, который будем отслеживать
    var targetNode = document.body;
     
    // Конфигурация observer (какие изменения отслеживать)
    var config = { attributes: true, childList: true, subtree: true };
     
    // Функция обратного вызова при изменении содержимого
    var callback = function(mutationsList, observer) {
        for(var mutation of mutationsList) {
            if (mutation.type == 'childList') {
                console.log('Содержимое изменилось');
                // Здесь можно добавить нужные действия при изменении содержимого
            }
        }
    };
     
    // Создаем новый экземпляр MutationObserver с функцией обратного вызова
    var observer = new MutationObserver(callback);
     
    // Начинаем отслеживать изменения в целевом элементе
    observer.observe(targetNode, config);
     
    // Чтобы прекратить отслеживание, используйте observer.disconnect();

    // Выбираем целевой элемент, который будем отслеживать var targetNode = document.body; // Конфигурация observer (какие изменения отслеживать) var config = { attributes: true, childList: true, subtree: true }; // Функция обратного вызова при изменении содержимого var callback = function(mutationsList, observer) { for(var mutation of mutationsList) { if (mutation.type == 'childList') { console.log('Содержимое изменилось'); // Здесь можно добавить нужные действия при изменении содержимого } } }; // Создаем новый экземпляр MutationObserver с функцией обратного вызова var observer = new MutationObserver(callback); // Начинаем отслеживать изменения в целевом элементе observer.observe(targetNode, config); // Чтобы прекратить отслеживание, используйте observer.disconnect();

    В данном примере мы отслеживаем изменения внутри элемента body, но вы можете выбрать любой другой элемент на странице. Когда содержимое этого элемента изменяется, функция обратного вызова будет вызвана, и вы сможете выполнить нужные действия.

    Не забудьте подключить этот скрипт на вашей странице, чтобы он мог работать. Надеюсь, это поможет вам решить вашу проблему!

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно