Для таких вещей советую использовать MutationObserver вместо рекурсивной проверки наличия элемента. MutationObserver позволяет отслеживать изменения в DOM-дереве и вызывать функцию обратного вызова при их возникновении. Это может существенно ускорить работу функции, так как она не будет постоянно проверять наличие элемента.
Вот по вашему примеру будет примерно так
function observeAndClickElement() {
const targetSelector = '.f5-notifier-notification-action_btn';
const observer = new MutationObserver((mutationsList) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
const notificationButton = document.querySelector(targetSelector);
if (notificationButton) {
notificationButton.click();
console.log("Кнопка в уведомлении была нажата");
}
}
}
);
observer.observe(document.body, childList: true, subtree: true );
observeAndClickElement();
В этой функции мы создаем новый экземпляр MutationObserver и передаем ему функцию обратного вызова. Затем мы запускаем отслеживание изменений в DOM-дереве, указав, что мы хотим отслеживать изменения в дочерних элементах body. Когда происходит изменение, мы проверяем наличие элемента и, если он есть, нажимаем на него.
Такой подход должен работать гораздо быстрее