使用Javacript,正确选择了按钮元素,但事件成功触发后发生了.click()

问题描述 投票:0回答:1

我正在编写一个 Javascript 用户脚本,可以在这个网页上自动点击“Voir plus”。 为了选择按钮元素“Voir plus”,我使用了很棒的 waitForElem 函数。这项工作很棒“console.log('元素已准备好:'+ elm.textContent);”给出“元素已准备好:Voir plus”😊 但点击“Voir plus”并没有发生,尽管我可以在控制台中看到“点击事件已成功触发”。 🤔(在 elm.click() 上添加 setTimeout 没有帮助)。

function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelector(selector)) {
            return resolve(document.querySelector(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelector(selector)) {
                observer.disconnect();
                resolve(document.querySelector(selector));
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}

waitForElm('div[data-qa-id="adview_description_container"] > button').then((elm) => {
    if (elm) {
        console.log('Element is ready: ' + elm.textContent);
        try {
            elm.click();
            console.log('Click event triggered successfully.');
        } catch (error) {
            console.error('Error while clicking the element:', error);
        }
    } else {
        console.error('Element not found.');
    }
}).catch((error) => {
    console.error('Error while waiting for the element:', error);
});
javascript click userscripts
1个回答
0
投票

你不需要使用waitForElm,或者突变观察者;只要您的脚本运行在

document-idle
(默认在 tampermonkey 中)。这就是您所需要的:

document.querySelector('div[data-qa-id="adview_description_container"] > button').click();
© www.soinside.com 2019 - 2024. All rights reserved.