Как настроить автоматическую перезагрузку страницы после появления определенного элемента?

Как настроить автоматическую перезагрузку страницы при появлении определенного элемента на ней (например, затемнения экрана из-за устаревших данных) с использованием Mutation Observer и повторять процесс каждый раз при обнаружении этого элемента? Код выше вызывает затемнение через определенный интервал времени, например, 2-3 минуты.
  • 18 марта 2024 г. 10:39
Ответы на вопрос 2
Для этого можно воспользоваться следующим кодом, который будет следить за изменениями в DOM и автоматически перезагружать страницу при появлении определенного элемента:

```js
// Создаем новый экземпляр Mutation Observer
const observer = new MutationObserver((mutationsList, observer) => {
    // Перебираем все мутации
    for(let mutation of mutationsList) {
        // Проверяем, что в мутации есть добавление элемента
        if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
            // Перебираем добавленные элементы
            mutation.addedNodes.forEach(node => {
                // Проверяем, что добавленный элемент имеет определенный селектор
                if (node.matches('.your-element-selector')) {
                    // Перезагружаем страницу
                    location.reload();
                }
            });
        }
    }
});

// Настройки observer
const config = { childList: true, subtree: true };

// Начинаем отслеживать изменения в DOM
observer.observe(document.body, config);
```

В данном коде `'.your-element-selector'` - это селектор вашего элемента, при появлении которого нужно перезагрузить страницу. Просто замените этот селектор на нужный вам.

Теперь код будет следить за появлением элемента с указанным селектором и автоматически перезагружать страницу при его появлении.
Самое простое - проверять наличие элемента каждые N секунд (например, 5): 
setInterval(function () {
  if (document.querySelector("#content > div > div.taskblackout")) {
    document.location.reload()
  }
}, 5000);
Похожие вопросы