[英]console.log() not logging to console inside interval
我瀏覽了很多帖子,似乎找不到我的問題的答案。
我的間隔中有一個 console.log 表達式。 當代碼在控制台中運行時,它完美地執行,但拒絕控制台記錄我的字符串,通知客戶端用戶腳本正在運行。
這是我的帶注釋的代碼:
let likes = 0;
setInterval(() => {
const likeButton = document.querySelector('svg[aria-label="Like"]');
const nextButton = document.querySelector('svg[aria-label="Next"]');
if (likeButton) {
likeButton.parentNode.parentElement.click()
likes++;
console.log(`You've liked ${likes} post(s)`);
}
nextButton.parentElement.parentNode.click();
}, 20000);
從我在 Instagram 上看過的幾篇帖子的inspect source
來看,點贊按鈕似乎有兩種狀態。
<svg aria-label="Like" />
當帖子還沒有被點贊時。<svg aria-label="Unlike" />
當帖子已被您點贊時。 問題是const likeButton = document.querySelector('svg[aria-label="Like"]');
將整個元素作為對象返回,並且不是真/假值,因此if (likeButton) {
永遠不會為真,但正如@Unmitigated 指出的那樣,它可能是“真實的”。 要確定按鈕是否已被單擊並消除任何“真正的擺動空間”,您需要查看likeButton
元素上的屬性。 為此,您可以使用 getAttribute()。
let likes = 0;
setInterval(() => {
const likeButton = document.querySelector('svg[aria-label="Like"]');
const nextButton = document.querySelector('svg[aria-label="Next"]');
if (likeButton.getAttribute("aria-label") === "Like")) {
likeButton.parentNode.parentElement.click();
likes++;
console.log(`You've liked ${likes} post(s)`);
}
nextButton.parentElement.parentNode.click();
}, 20000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.