我正在编写一个 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);
});
你不需要使用waitForElm,或者突变观察者;只要您的脚本运行在
document-idle
(默认在 tampermonkey 中)。这就是您所需要的:
document.querySelector('div[data-qa-id="adview_description_container"] > button').click();