Как узнать, существует ли определенный элемент на веб-странице, используя скрипт в TamperMonkey?

У меня возникла проблема с работой скрипта: он функционирует нормально до тех пор, пока не произойдет небольшая задержка в интернете, из-за которой объект с классом <pre><code class="javascript">const text = document.querySelector('.Tag-module_content__uLsTI').textContent;</code></pre> временно исчезает. Я не уверен, как это правильно проверить, и уже попробовал множество различных способов. Как мне поступить в данной ситуации?
  • 30 декабря 2024 г. 14:03
Ответы на вопрос 2
Для проверки существования элемента на веб-странице с использованием TamperMonkey и обработки ситуации, когда элемент может временно отсутствовать, вы можете использовать `setInterval` для периодической проверки наличия элемента. Как только элемент будет найден, вы можете выполнить необходимые действия и остановить проверку. Вот пример такого подхода:

```javascript
// ==UserScript==
// @name         Проверка Элемента
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Проверяет наличие элемента на странице
// @match        *://your-website.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для проверки существования элемента
    function checkElement() {
        const element = document.querySelector('.Tag-module_content__uLsTI');
        if (element) {
            // Если элемент найден, можно взять его текст и выполнить нужные действия
            const text = element.textContent;
            console.log('Элемент найден:', text);

            // Здесь можно добавить код для выполнения других действий

            // Остановить интервал после нахождения элемента
            clearInterval(checkInterval);
        }
    }

    // Запускаем проверку каждые 1000 миллисекунд (1 секунда)
    const checkInterval = setInterval(checkElement, 1000);
})();
```

### Пояснение:

1. **Функция `checkElement`** — это функция, которая проверяет наличие элемента с классом `.Tag-module_content__uLsTI`. Если элемент найден, она выполняет необходимые действия (в данном случае просто выводит текст элемента в консоль) и останавливает дальнейшие проверки, вызывая `clearInterval`.

2. **Периодическая проверка** — с помощью `setInterval` проверяем наличие элемента каждую секунду (1000 миллисекунд).

3. **Остановка проверки** — как только элемент найден и обработан, интервал остановится, чтобы оптимизировать ресурсы.

Этот подход позволяет вашему скрипту корректно реагировать на временные задержки в загрузке элементов на странице.
Так попробуй 
(function() { 
    'use strict'; 
    let timerId; 

    let timer = () => { 
        const element = document.querySelector('.Tag-module_content__uLsTI');

        // Проверяем, найден ли элемент
        if (element) { 
            const text = element.textContent;
            if (text.slice(0, -1) < (-53)) { 
                buy("ActionAnimatedSmallButtonZone_container__Gxja8 ActionAnimatedSmallButtonZone_desktop___1slH ActionAnimatedSmallButtonZone_type-cart__1GcmO"); 
                setTimeout(buy1, 100); 
                setTimeout(buy2, 100); 
                console.log("Сработало"); 
                setTimeout(clsmenu, 30000); 
                setTimeout(rel, 35000); 
                timerId = setTimeout(timer, 45000); 
            } else { 
                rel(); 
                alert(text); 
                timerId = setTimeout(timer, 1500); 
            }
        } else { 
            // Если элемент не найден, выполняем действия
            rel(); 
            console.log("Элемент не найден, повторная проверка через 1500 мс");
            timerId = setTimeout(timer, 1500); 
        }
    } 

    timerId = setTimeout(timer, 300); 
})();
Похожие вопросы