我正在使用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元素引用吗?
答案 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毫秒)内检查一次画布,直到找到一个。