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

getting a reference to an element created with javascript using Tampermonkey

本文关键字:创建 元素 引用 javascript 使用 Tampermonkey 获取      更新时间:2023-09-26

我正在使用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。

你知道创建画布元素引用后如何获得它吗?

我使用了异步循环

它并不是真正的异步循环。您刚刚创建了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毫秒)内检查画布,直到找到为止。