getEventListeners

Поддержка
  • Планируется ли вообще реализация подобных фич? Потому что даже nodeJS с его JSDOM не помогает блять. Это просто пиздец. Задача проще простого, обнаружить на страницы элементы для нажатия.

    const jsdom = require('jsdom');
    const { JSDOM } = jsdom;
    
    // HTML код, который вы хотите анализировать
    const html = [[SAVED_PAGE_HTML]];
    
    // Создаем виртуальное окружение DOM с помощью jsdom
    const dom = new JSDOM(html);
    
    // Получаем глобальный объект window из виртуального окружения
    const { window } = dom;
    
    // Доступ к DOM виртуального окружения
    const document = window.document;
    
    // Функция для имитации getEventListeners
    function getEventListeners(element) {
        // Создаем пустой объект для хранения событий
        const eventListeners = {};
        
        // Получаем список обработчиков событий для элемента
        const eventNames = Object.keys(element._events || {});
    
        // Проходим по каждому типу события
        eventNames.forEach(eventName => {
            // Получаем обработчики для данного типа события
            const handlers = element._events[eventName];
            // Добавляем в объект eventListeners
            eventListeners[eventName] = handlers.map(handler => handler.listener);
        });
    
        return eventListeners;
    }
    
    // Проходим по элементам DOM и анализируем обработчики событий
    const allElements = document.querySelectorAll('*');
    const elementsWithClickEvents = [];
    allElements.forEach(function(element) {
        const clickEvents = getEventListeners(element).click;
        if (clickEvents && clickEvents.length > 0) {
            elementsWithClickEvents.push(element);
        }
    });
    
    // Выводим элементы с обработчиками событий click
    console.log('Элементы с обработчиками событий click:', elementsWithClickEvents);
    [[RESULT]] = elementsWithClickEvents
    

    Мне серьёзно парсить сидеть //button и прочую ебалу? А div элементы как прикажите искать?