首页 > 解决方案 > JS如何获取所有img src标签

问题描述

我想从<IMG>Twitter 中的每个人那里获取 SRC。

let n = document.getElementsByTagName("img");

for(tip of n){
    console.log(tip.src);
}

它适用于其他页面,但不适用于 twitter。最后我做到了;

let n = document.getElementsByTagName("img");

function example(){
    for(tip of n){
        if(tip.src == "https://abs-0.twimg.com/emoji/v2/svg/1f1ea-1f1f8.svg"){
            tip.src = "https://abs-0.twimg.com/emoji/v2/svg/1f3f3-fe0f-200d-1f308.svg";
        }
    }
}

setInterval(example, 100);

使用 setInterval 它也可以工作,Twitter 动态加载内容,因此使用 setInterval 我可以获得所有这些新结果。(如果不使用 setInterval,我怎么能做到这一点?)

此外,由于某些奇怪的原因,图片没有改变。它不更新。

更新:

function example(){
let n = document.getElementsByTagName("div");
    for(tip of n){
        console.log(tip.style['background-image']);

        if(tip.style['background-image'] == 'url("https://abs-0.twimg.com/emoji/v2/svg/1f1ea-1f1f8.svg")'){
            tip.style['background-image']= 'url("https://abs-0.twimg.com/emoji/v2/svg/1f3f3-fe0f-200d-1f308.svg")';
        }
    }
}

setInterval(example, 10000);

现在它工作得很好,但是我怎么能在不使用 setInterval eeeeeeevery 的情况下获取新数据并且只在必要时调用该函数?

标签: javascripttwitter

解决方案


每次要迭代它们时都必须加载图像,以获得“新鲜”的 img 元素

尝试这个

function example(){
    let n = document.getElementsByTagName("img");  // Moved here
    for(tip of n){
        if(tip.src == "https://abs-0.twimg.com/emoji/v2/svg/1f1ea-1f1f8.svg"){
            tip.src = "https://abs-0.twimg.com/emoji/v2/svg/1f3f3-fe0f-200d-1f308.svg";
        }
    }
}

setInterval(example, 100);

推荐阅读