使用Tampermonkey获取使用javascript创建的元素的引用

时间:2016-05-17 09:28:58

标签: javascript tampermonkey

我正在使用Tampermonkey来获取之前使用javascript创建的元素。用于创建元素的代码如下所示:

a = document.getElementById("iframe").contentDocument.createElement("canvas")

我试过

var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0];

和此:

var canvas = document.getElementsByTagName("canvas")[0];

由于我不知道元素的确切时间,我使用了异步循环

for (var i = 0; i<2000; i++){
    setTimeout(function(){
        var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0];
        if (typeof canvas !== 'undefined') {
            console.log("HAS CANVAS");
            console.log(i);
        }else{
            console.log("UNDEFINED");
        }
    },1);
}

但这总是返回undefined。

知道如何在创建后获取canvas元素引用吗?

1 个答案:

答案 0 :(得分:0)

  

我使用了异步循环

它不是真正的异步循环。您刚刚创建了2000个超时,它们将尽快执行,因为超时值为1。

我认为在你的情况下,间隔是合适的。

var intervalId = setInterval(function(){
    var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0];
    if (typeof canvas !== 'undefined') {
        console.log("HAS CANVAS");
        console.log(i);
        clearInterval(intervalId);
    }else{
        console.log("UNDEFINED");
    }
}, 1000);

它将在一秒钟(1000毫秒)内检查一次画布,直到找到一个。